bootdo

/*
Navicat MySQL Data Transfer

Source Server         : localhost
Source Server Version : 50717
Source Host           : localhost:3306
Source Database       : bootdo

Target Server Type    : MYSQL
Target Server Version : 50717
File Encoding         : 65001

Date: 2018-01-04 14:01:20
*/

SET FOREIGN_KEY_CHECKS=0;

-- ----------------------------
-- Table structure for `blog_content`
-- ----------------------------
DROP TABLE IF EXISTS `blog_content`;
CREATE TABLE `blog_content` (
  `cid` bigint(20) NOT NULL AUTO_INCREMENT,
  `title` varchar(255) DEFAULT NULL COMMENT '標題',
  `slug` varchar(255) DEFAULT NULL,
  `created` bigint(20) DEFAULT NULL COMMENT '創建人id',
  `modified` bigint(20) DEFAULT NULL COMMENT '最近修改人id',
  `content` text COMMENT '內容',
  `type` varchar(16) DEFAULT NULL COMMENT '類型',
  `tags` varchar(200) DEFAULT NULL COMMENT '標籤',
  `categories` varchar(200) DEFAULT NULL COMMENT '分類',
  `hits` int(5) DEFAULT NULL,
  `comments_num` int(5) DEFAULT '0' COMMENT '評論數量',
  `allow_comment` int(1) DEFAULT '0' COMMENT '開啓評論',
  `allow_ping` int(1) DEFAULT '0' COMMENT '允許ping',
  `allow_feed` int(1) DEFAULT '0' COMMENT '允許反饋',
  `status` int(1) DEFAULT NULL COMMENT '狀態',
  `author` varchar(100) DEFAULT NULL COMMENT '作者',
  `gtm_create` datetime DEFAULT NULL COMMENT '創建時間',
  `gtm_modified` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`cid`)
) ENGINE=InnoDB AUTO_INCREMENT=122 DEFAULT CHARSET=utf8 COMMENT='文章內容';

-- ----------------------------
-- Records of blog_content
-- ----------------------------
INSERT INTO `blog_content` VALUES ('75', '基於 Springboot 和 Mybatis 的後臺管理系統 BootDo', null, null, null, '<h3 style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif;\">項目介紹</h3><ul style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px 30px; list-style-position: initial; list-style-image: initial; color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><li><p>面向學習型的開源框架,簡潔高效,減少過渡封裝,展現技術本質</p></li><li><p>Springboot作爲基礎框架,使用mybatis作爲持久層框架</p></li><li><p>使用官方推薦的thymeleaf做爲模板引擎,shiro作爲安全框架,主流技術,“一網打盡”</p></li><li><p>基於註解的sql寫法,零XML,極簡配置,一鍵前後臺代碼生成</p></li></ul><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><span style=\"font-weight: bolder;\">演示地址</span>&nbsp;<a href=\"http://47.93.239.129/\" style=\"outline: 0px; color: rgb(68, 102, 187);\">http://47.93.239.129</a></p><h3 style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif;\">功能簡介</h3><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\">1. 用戶管理<br>2. 角色管理<br>3. 部門管理<br>4. 菜單管理<br>5. 系統日誌<br>6. 代碼生成<br>7. 內容管理</p><h3 style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif;\">所用框架</h3><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><span style=\"font-weight: bolder;\">前端</span><br>1. Bootstrap<br>2. jQuery<br>3. bootstrap-table<br>4. layer<br>5. jsTree&nbsp;<br>6. summernote<br>7. jquery-validate<br>8. jquery-treegrid</p><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><span style=\"font-weight: bolder;\">後端</span><br>1. SpringBoot&nbsp;<br>2. MyBatis<br>3. Thymeleaf<br>4. Shiro<br>5. druid</p><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><span style=\"font-weight: bolder;\">項目截圖</span></p><p style=\"color: rgb(17, 17, 17); font-family: &quot;PingFang SC&quot;, &quot;Helvetica Neue&quot;, &quot;Microsoft YaHei UI&quot;, &quot;Microsoft YaHei&quot;, &quot;Noto Sans CJK SC&quot;, Sathu, EucrosiaUPC, sans-serif; font-size: 16px;\"><img height=\"400\" src=\"https://static.oschina.net/uploads/space/2017/0912/182421_5LaN_3244087.png\" width=\"650\" style=\"border-width: initial; border-style: none; outline: 0px; width: 882px; max-width: -webkit-fit-content; height: auto;\"></p>', 'article', null, null, null, null, '0', '0', '1', '1', 'bootdo', '2017-09-22 14:44:44', '2017-09-22 14:44:44');
INSERT INTO `blog_content` VALUES ('100', 'springboot thymeleaf和shiro 整合——按鈕可見性', null, null, null, '<p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">添加依賴</p><pre class=\"hljs xml\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; padding: 2px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 3px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">&lt;<span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">dependency</span>&gt;</span><code class=\"hljs xml\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; display: block; overflow-x: auto; padding: 10px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 4px; font-size: 13px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\"> \r\n   <span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">groupId</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span>com.github.theborakompanioni<span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;/</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">groupId</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span>\r\n    <span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">artifactId</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span>thymeleaf-extras-shiro<span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;/</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">artifactId</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span>\r\n    <span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">version</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span></code>1.2.1<code class=\"hljs xml\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; display: block; overflow-x: auto; padding: 10px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 4px; font-size: 13px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;/</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">version</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span> \r\n<span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&lt;/</span><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\"><span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">dependency</span></span></span><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">&gt;</span></span></code></pre><p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">&nbsp;</p><p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">在shiro的configuration中配置</p><pre class=\"hljs java\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; padding: 2px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 3px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\"><span class=\"hljs-meta\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(127, 159, 127);\">@Bean</span>\r\n    <span class=\"hljs-function\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">public</span> ShiroDialect <span class=\"hljs-title\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">shiroDialect</span><span class=\"hljs-params\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">()</span> </span>{\r\n        <span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">return</span> <span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">new</span> ShiroDialect();\r\n    }</pre><p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">&nbsp;</p><p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">在html中加入xmlns</p><pre class=\"hljs xml\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; padding: 2px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 3px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\"><span class=\"hljs-tag\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">&lt;<span class=\"hljs-name\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(239, 239, 143);\">html</span> <span class=\"hljs-attr\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">lang</span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"zh_CN\"</span> <span class=\"hljs-attr\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">xmlns:th</span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"http://www.thymeleaf.org\"</span>\r\n      <span class=\"hljs-attr\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\">xmlns:shiro</span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"http://www.pollix.at/thymeleaf/shiro\"</span>&gt;</span></pre><p style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; margin-bottom: 16px; color: rgb(61, 70, 77); font-family: &quot;Pingfang SC&quot;, STHeiti, &quot;Lantinghei SC&quot;, &quot;Open Sans&quot;, Arial, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, SimSun, sans-serif; font-size: 16px; background-color: rgb(248, 248, 248);\">例子</p><pre class=\"hljs scala\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; padding: 2px; background: rgb(63, 63, 63); color: rgb(220, 220, 220); border-radius: 3px; line-height: 1.4; word-wrap: normal; font-family: Menlo, Monaco, Consolas, &quot;Courier New&quot;, monospace;\">&lt;button shiro:hasPermission=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"sys:user:add\"</span> <span class=\"hljs-class\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">type</span></span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"button\"</span> <span class=\"hljs-class\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">class</span></span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"btn &nbsp;btn-primary\"</span> onclick=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"add()\"</span>&gt;\r\n&nbsp;&nbsp; &lt;i <span class=\"hljs-class\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent;\"><span class=\"hljs-keyword\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(227, 206, 171);\">class</span></span>=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"fa fa-plus\"</span> aria-hidden=<span class=\"hljs-string\" style=\"box-sizing: inherit; -webkit-tap-highlight-color: transparent; color: rgb(204, 147, 147);\">\"true\"</span>&gt;&lt;/i&gt;添加\r\n&lt;/button&gt;</pre>', 'article', null, null, null, null, '1', null, '0', '1', 'bootdo', '2017-09-22 13:24:30', '2017-09-22 13:24:30');
INSERT INTO `blog_content` VALUES ('108', 'spring boot ehcache整合', null, null, null, '<h3 id=\"pomxml配置-引入依賴包\" style=\"font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; color: rgb(63, 63, 63); margin: 0.8em 0px; font-size: 1.7em; padding: 0px;\">pom.xml配置 引入依賴包</h3><pre class=\"prettyprint\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; font-size: 14px; white-space: nowrap; padding: 5px 5px 5px 60px; margin-bottom: 1.1em; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-color: rgba(128, 128, 128, 0.075); border-radius: 0px; position: relative; overflow-y: hidden;\"><code class=\"hljs xml has-numbering\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; word-wrap: normal;\"><span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">dependency</span>&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">groupId</span>&gt;</span>org.springframework.boot<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">groupId</span>&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">artifactId</span>&gt;</span>spring-boot-starter-cache<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">artifactId</span>&gt;</span>\r\n<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">dependency</span>&gt;</span>\r\n<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">dependency</span>&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">groupId</span>&gt;</span>net.sf.ehcache<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">groupId</span>&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">artifactId</span>&gt;</span>ehcache<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">artifactId</span>&gt;</span>\r\n<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">dependency</span>&gt;</span></code><ul class=\"pre-numbering\" style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; list-style: none; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; border-right: 1px solid rgb(221, 221, 221); text-align: right;\"><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">1</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">2</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">3</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">4</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">5</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">6</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">7</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">8</li></ul></pre><h3 id=\"編寫配置類設置緩存機制\" style=\"font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; color: rgb(63, 63, 63); margin: 0.8em 0px; font-size: 1.7em; padding: 0px;\">編寫配置類,設置緩存機制</h3><pre class=\"prettyprint\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; font-size: 14px; white-space: nowrap; padding: 5px 5px 5px 60px; margin-bottom: 1.1em; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-color: rgba(128, 128, 128, 0.075); border-radius: 0px; position: relative; overflow-y: hidden;\"><code class=\"hljs java has-numbering\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; word-wrap: normal;\"><span class=\"hljs-annotation\" style=\"margin: 0px; padding: 0px; color: rgb(155, 133, 157);\">@Configuration</span>\r\n<span class=\"hljs-annotation\" style=\"margin: 0px; padding: 0px; color: rgb(155, 133, 157);\">@EnableCaching</span>\r\n<span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">public</span> <span class=\"hljs-class\" style=\"margin: 0px; padding: 0px;\"><span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">class</span> <span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">CacheConfiguration</span> {</span>\r\n\r\n    <span class=\"hljs-annotation\" style=\"margin: 0px; padding: 0px; color: rgb(155, 133, 157);\">@Bean</span>\r\n    <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">public</span> EhCacheCacheManager <span class=\"hljs-title\" style=\"margin: 0px; padding: 0px;\">ehCacheCacheManager</span>(EhCacheManagerFactoryBean bean) {\r\n        <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">return</span> <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">new</span> EhCacheCacheManager(bean.getObject());\r\n    }\r\n\r\n    <span class=\"hljs-annotation\" style=\"margin: 0px; padding: 0px; color: rgb(155, 133, 157);\">@Bean</span>\r\n    <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">public</span> EhCacheManagerFactoryBean <span class=\"hljs-title\" style=\"margin: 0px; padding: 0px;\">ehCacheManagerFactoryBean</span>() {\r\n        EhCacheManagerFactoryBean cacheManagerFactoryBean = <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">new</span> EhCacheManagerFactoryBean();\r\n        cacheManagerFactoryBean.setConfigLocation(<span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">new</span> ClassPathResource(<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"config/ehcache.xml\"</span>));\r\n        cacheManagerFactoryBean.setShared(<span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">true</span>);\r\n        <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">return</span> cacheManagerFactoryBean;\r\n    }\r\n}</code><ul class=\"pre-numbering\" style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; list-style: none; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; border-right: 1px solid rgb(221, 221, 221); text-align: right;\"><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">1</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">2</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">3</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">4</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">5</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">6</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">7</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">8</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">9</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">10</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">11</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">12</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">13</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">14</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">15</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">16</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">17</li></ul></pre><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(63, 63, 63); font-family: &quot;microsoft yahei&quot;; font-size: 15px;\">ehcache.xml配置:</p><pre class=\"prettyprint\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; font-size: 14px; white-space: nowrap; padding: 5px 5px 5px 60px; margin-bottom: 1.1em; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-color: rgba(128, 128, 128, 0.075); border-radius: 0px; position: relative; overflow-y: hidden;\"><code class=\"hljs xml has-numbering\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; word-wrap: normal;\"><span class=\"hljs-pi\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;?xml version=\"1.0\" encoding=\"UTF-8\"?&gt;</span>\r\n<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">ehcache</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">xmlns:xsi</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"http://www.w3.org/2001/XMLSchema-instance\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">xsi:noNamespaceSchemaLocation</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"http://ehcache.org/ehcache.xsd\"</span>\r\n    <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">updateCheck</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span>&gt;</span>\r\n    <span class=\"hljs-comment\" style=\"margin: 0px; padding: 0px; color: rgb(136, 0, 0);\">&lt;!-- diskStore:爲緩存路徑,ehcache分爲內存和磁盤兩級,此屬性定義磁盤的緩存位置。\r\n    參數解釋如下: user.home – 用戶主目錄 \r\n    user.dir – 用戶當前工作目錄 \r\n    java.io.tmpdir – 默認臨時文件路徑 --&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">diskStore</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">path</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"java.io.tmpdir/Tmp_EhCache\"</span> /&gt;</span>\r\n    <span class=\"hljs-comment\" style=\"margin: 0px; padding: 0px; color: rgb(136, 0, 0);\">&lt;!-- defaultCache:默認緩存策略,當ehcache找不到定義的緩存時,則使用這個緩存策略。只能定義一個。 --&gt;</span>\r\n    <span class=\"hljs-comment\" style=\"margin: 0px; padding: 0px; color: rgb(136, 0, 0);\">&lt;!-- name:緩存名稱。 \r\n        maxElementsInMemory:緩存最大數目\r\n        maxElementsOnDisk:硬盤最大緩存個數。 \r\n        eternal:對象是否永久有效,一但設置了,timeout將不起作用。 \r\n        overflowToDisk:是否保存到磁盤,當系統當機時 \r\n        timeToIdleSeconds:設置對象在失效前的允許閒置時間(單位:秒)。僅當eternal=false對象不是永久有效時使 用,可選屬性,默認值是0,也就是可閒置時間無窮大。\r\n        timeToLiveSeconds:設置對象在失效前允許存活時間(單位:秒)。最大時間介於創建時間和失效時間之間。僅 當eternal=false對象不是永久有效時使用,默認是0.,也就是對象存活時間無窮大。 \r\n        diskPersistent:是否緩存虛擬機重啓期數據Whether the disk store persists between restarts \r\n        of the Virtual Machine. The default value is false. \r\n        diskSpoolBufferSizeMB:這個參數設置DiskStore(磁盤緩存)的緩存區大小。默認是30MB。每個Cache都應該 有自己的一個緩衝區。 \r\n        diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認是120秒。 \r\n        memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內 存。默認策略是LRU(最近最少使用)。\r\n        你可以設置爲FIFO(先進先出)或是LFU(較少使用)。 \r\n        clearOnFlush:內存數量最大時是否清除。\r\n        memoryStoreEvictionPolicy:可選策略有:LRU(最近最少使用,默認策略)、FIFO(先進先出)、LFU(最少 訪問次數)。 \r\n         FIFO,first in first out,這個是大家最熟的,先進先出。\r\n         LFU, Less Frequently Used,就是上面例子中使用的策略,直白一點就是講一直以來最少被使用的。如上面 所講,緩存的元素有一個hit屬性,hit值最小的將會被清出緩存。 \r\n         LRU,Least Recently Used,最近最少使用的,緩存的元素有一個時間戳,當緩存容量滿了,而又需要騰出地 方來緩存新的元素的時候,\r\n         那麼現有緩存元素中時間戳離當前時間最遠的元素將被清出緩存。 --&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">defaultCache</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">eternal</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">maxElementsInMemory</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"1000\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">overflowToDisk</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">diskPersistent</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span>\r\n        <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">timeToIdleSeconds</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"0\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">timeToLiveSeconds</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"600\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">memoryStoreEvictionPolicy</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"LRU\"</span> /&gt;</span>\r\n    <span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">cache</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">name</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"snailAuthCache\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">eternal</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">maxElementsInMemory</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"10000\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">overflowToDisk</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">diskPersistent</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"false\"</span>\r\n        <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">timeToIdleSeconds</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"0\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">timeToLiveSeconds</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"0\"</span> <span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">memoryStoreEvictionPolicy</span>=<span class=\"hljs-value\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"LFU\"</span> /&gt;</span>\r\n<span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">ehcache</span>&gt;</span></code><ul class=\"pre-numbering\" style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; list-style: none; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; border-right: 1px solid rgb(221, 221, 221); text-align: right;\"><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">1</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">2</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">3</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">4</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">5</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">6</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">7</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">8</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">9</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">10</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">11</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">12</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">13</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">14</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">15</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">16</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">17</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">18</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">19</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">20</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">21</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">22</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">23</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">24</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">25</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">26</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">27</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">28</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">29</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">30</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">31</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">32</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">33</li></ul><div class=\"save_code tracking-ad\" data-mod=\"popu_249\" style=\"margin: 0px; padding: 0px; position: absolute; height: 60px; right: 30px; top: 5px; color: rgb(255, 255, 255); cursor: pointer; z-index: 2;\"><a style=\"color: rgb(202, 12, 22); margin: 0px; padding: 0px; outline: none;\"><img src=\"http://static.blog.csdn.net/images/save_snippets.png\" style=\"outline: none; max-width: 100%;\"></a></div></pre><h3 id=\"測試\" style=\"font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; color: rgb(63, 63, 63); margin: 0.8em 0px; font-size: 1.7em; padding: 0px;\"><br></h3>', 'article', null, null, null, null, '1', null, '0', '1', 'bootdo', '2017-09-22 17:48:29', '2017-09-22 17:48:29');
INSERT INTO `blog_content` VALUES ('109', 'spring-boot整合ehcache實現緩存機制', null, null, null, '<p><br></p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  EhCache 是一個純Java的進程內緩存框架,具有快速、精幹等特點,是Hibernate中默認的CacheProvider。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  ehcache提供了多種緩存策略,主要分爲內存和磁盤兩級,所以無需擔心容量問題。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  spring-boot是一個快速的集成框架,其設計目的是用來簡化新Spring應用的初始搭建以及開發過程。該框架使用了特定的方式來進行配置,從而使開發人員不再需要定義樣板化的配置。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  由於spring-boot無需任何樣板化的配置文件,所以spring-boot集成一些其他框架時會有略微的不同。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  1.spring-boot是一個通過maven管理的jar包的框架,集成ehcache需要的依賴如下</p><div class=\"cnblogs_code\" style=\"background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; color: rgb(0, 0, 0); font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div><pre style=\"margin-bottom: 0px; line-height: 1.42857; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n     <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-context-support<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n         <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>net.sf.ehcache<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n      <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>ehcache<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n          <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>2.8.3<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>        </pre><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div></div><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    具體pom.xml文件如下</p><div class=\"cnblogs_code\" style=\"background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; color: rgb(0, 0, 0); font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div><pre style=\"margin-bottom: 0px; line-height: 1.42857; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;?</span><span style=\"color: rgb(255, 0, 255); line-height: 1.5 !important;\">xml version=\"1.0\" encoding=\"UTF-8\"</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">?&gt;</span>\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">project </span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">xmlns</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"http://maven.apache.org/POM/4.0.0\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> xmlns:xsi</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"http://www.w3.org/2001/XMLSchema-instance\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">\r\n    xsi:schemaLocation</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd\"</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">modelVersion</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>4.0.0<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">modelVersion</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>com.lclc.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>boot-cache<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>0.0.1-SNAPSHOT<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">&lt;!--</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\"> Inherit defaults from Spring Boot </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">--&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">parent</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-boot-starter-parent<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>1.1.3.RELEASE<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">parent</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencies</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-boot-starter-web<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-boot-starter-data-jpa<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-boot-starter-thymeleaf<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        \r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>mysql<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>mysql-connector-java<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>com.google.guava<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>guava<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>17.0<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        \r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-context-support<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>net.sf.ehcache<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>ehcache<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>2.8.3<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">version</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependency</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencies</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencyManagement</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencies</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencies</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">dependencyManagement</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">build</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">plugins</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">plugin</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n                <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>org.springframework.boot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">groupId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n                <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-boot-maven-plugin<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">artifactId</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">plugin</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">plugins</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">build</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repositories</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-snapshots<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>http://repo.spring.io/snapshot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">snapshots</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n                <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">enabled</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>true<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">enabled</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">snapshots</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-milestones<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>http://repo.spring.io/milestone<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">repositories</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepositories</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-snapshots<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>http://repo.spring.io/snapshot<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>spring-milestones<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">id</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>http://repo.spring.io/milestone<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">url</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n        <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepository</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">pluginRepositories</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">project</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span></pre><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div></div><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;  2.使用ehcache,我們需要一個ehcache.xml來定義一些cache的屬性。</p><div class=\"cnblogs_code\" style=\"background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; color: rgb(0, 0, 0); font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div><pre style=\"margin-bottom: 0px; line-height: 1.42857; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;?</span><span style=\"color: rgb(255, 0, 255); line-height: 1.5 !important;\">xml version=\"1.0\" encoding=\"UTF-8\"</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">?&gt;</span>\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">ehcache </span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">xmlns:xsi</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"http://www.w3.org/2001/XMLSchema-instance\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> xsi:noNamespaceSchemaLocation</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"http://ehcache.org/ehcache.xsd\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">\r\n  updateCheck</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span>\r\n          <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">diskStore </span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">path</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"java.io.tmpdir/Tmp_EhCache\"</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">/&gt;</span>\r\n           <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">defaultCache </span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">eternal</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> maxElementsInMemory</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"1000\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> overflowToDisk</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> diskPersistent</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">\r\n    timeToIdleSeconds</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"0\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> timeToLiveSeconds</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"600\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> memoryStoreEvictionPolicy</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"LRU\"</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">/&gt;</span>\r\n\r\n            <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">cache </span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">name</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"demo\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> eternal</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> maxElementsInMemory</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"100\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> overflowToDisk</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> diskPersistent</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"false\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\">\r\n    timeToIdleSeconds</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"0\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> timeToLiveSeconds</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"300\"</span><span style=\"color: rgb(255, 0, 0); line-height: 1.5 !important;\"> memoryStoreEvictionPolicy</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">=\"LRU\"</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">/&gt;</span>\r\n\r\n<span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&lt;/</span><span style=\"color: rgb(128, 0, 0); line-height: 1.5 !important;\">ehcache</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">&gt;</span></pre><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div></div><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;  解釋下這個xml文件中的標籤。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  (1).<span style=\"color: rgb(128, 0, 0);\">diskStore:</span>&nbsp;爲緩存路徑,ehcache分爲內存和磁盤兩級,此屬性定義磁盤的緩存位置。參數解釋如下:    <br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;     user.home – 用戶主目錄<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;      user.dir&nbsp; – 用戶當前工作目錄<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;    &nbsp; java.io.tmpdir – 默認臨時文件路徑</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  (2).<span style=\"color: rgb(128, 0, 0);\">defaultCache:<span style=\"color: rgb(0, 0, 0);\">默認緩存策略,當ehcache找不到定義的緩存時,則使用這個緩存策略。只能定義一個。</span></span></p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\"><span style=\"color: rgb(128, 0, 0);\"><span style=\"color: rgb(0, 0, 0);\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; (3).<span style=\"color: rgb(128, 0, 0);\">cache</span>:自定緩存策略,爲自定義的緩存策略。參數解釋如下:</span></span></p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\"><span style=\"color: rgb(128, 0, 0);\"><span style=\"color: rgb(0, 0, 0);\">    cache元素的屬性:&nbsp; &nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; name:緩存名稱&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxElementsInMemory:內存中最大緩存對象數&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; maxElementsOnDisk:硬盤中最大緩存對象數,若是0表示無窮大&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; eternal:true表示對象永不過期,此時會忽略timeToIdleSeconds和timeToLiveSeconds屬性,默認爲false &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; overflowToDisk:true表示當內存緩存的對象數目達到了maxElementsInMemory界限後,會把溢出的對象寫到硬盤緩存中。注意:如果緩存的對象要寫入到硬盤中的話,則該對象必須實現了Serializable接口才行。&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diskSpoolBufferSizeMB:磁盤緩存區大小,默認爲30MB。每個Cache都應該有自己的一個緩存區。&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diskPersistent:是否緩存虛擬機重啓期數據&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; diskExpiryThreadIntervalSeconds:磁盤失效線程運行時間間隔,默認爲120秒&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToIdleSeconds: 設定允許對象處於空閒狀態的最長時間,以秒爲單位。當對象自從最近一次被訪問後,如果處於空閒狀態的時間超過了timeToIdleSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清空。只有當eternal屬性爲false,該屬性纔有效。如果該屬性值爲0,則表示對象可以無限期地處於空閒狀態&nbsp; &nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; timeToLiveSeconds:設定對象允許存在於緩存中的最長時間,以秒爲單位。當對象自從被存放到緩存中後,如果處於緩存中的時間超過了 timeToLiveSeconds屬性值,這個對象就會過期,EHCache將把它從緩存中清除。只有當eternal屬性爲false,該屬性纔有效。如果該屬性值爲0,則表示對象可以無限期地存在於緩存中。timeToLiveSeconds必須大於timeToIdleSeconds屬性,纔有意義&nbsp; &nbsp;&nbsp;&nbsp;<br>&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp; memoryStoreEvictionPolicy:當達到maxElementsInMemory限制時,Ehcache將會根據指定的策略去清理內存。可選策略有:LRU(最近最少使用,默認策略)、FIFO(先進先出)、LFU(最少訪問次數)。&nbsp;&nbsp;</span></span></p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\"><span style=\"color: rgb(128, 0, 0);\"><span style=\"color: rgb(0, 0, 0);\">  3.將ehcache的管理器暴露給spring的上下文容器,</span></span></p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\"><span style=\"color: rgb(128, 0, 0);\"><span style=\"color: rgb(0, 0, 0);\">  </span></span></p><div class=\"cnblogs_code\" style=\"background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; color: rgb(0, 0, 0); font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div><pre style=\"margin-bottom: 0px; line-height: 1.42857; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">@Configuration\r\n</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">//</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\"> 標註啓動了緩存</span>\r\n<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">@EnableCaching\r\n</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">class</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> CacheConfiguration {\r\n\r\n    </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">/*</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">\r\n     * ehcache 主要的管理器\r\n     </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">*/</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">\r\n    @Bean(name </span>= \"appEhCacheCacheManager\"<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">)\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> EhCacheCacheManager ehCacheCacheManager(EhCacheManagerFactoryBean bean){\r\n        </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">return</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">new</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> EhCacheCacheManager (bean.getObject ());\r\n    }\r\n\r\n    </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">/*</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">\r\n     * 據shared與否的設置,Spring分別通過CacheManager.create()或new CacheManager()方式來創建一個ehcache基地.\r\n     </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">*/</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">\r\n    @Bean\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> EhCacheManagerFactoryBean ehCacheManagerFactoryBean(){\r\n        EhCacheManagerFactoryBean cacheManagerFactoryBean </span>= <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">new</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> EhCacheManagerFactoryBean ();\r\n        cacheManagerFactoryBean.setConfigLocation (</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">new</span> ClassPathResource (\"conf/ehcache-app.xml\"<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">));\r\n        cacheManagerFactoryBean.setShared (</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">true</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">);\r\n        </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">return</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> cacheManagerFactoryBean;\r\n    }\r\n}</span></pre><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div></div><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;&nbsp;     <span style=\"color: rgb(0, 0, 0);\">@Configuration</span>:爲spring-boot註解,主要標註此爲配置類,優先掃描。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;     <span style=\"color: rgb(0, 0, 0);\">@Bean</span>:向spring容器中加入bean。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  至此所有的配置都做好了,通過spring-boot進行集成框架就是這麼簡單。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  4.使用ehcache</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    使用ehcache主要通過spring的緩存機制,上面我們將spring的緩存機制使用了ehcache進行實現,所以使用方面就完全使用spring緩存機制就行了。<br>    具體牽扯到幾個註解:</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    @Cacheable:負責將方法的返回值加入到緩存中,參數3<br>    @CacheEvict:負責清除緩存,參數4</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">     參數解釋:</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    value:緩存位置名稱,不能爲空,如果使用EHCache,就是ehcache.xml中聲明的cache的name<br>    key:緩存的key,默認爲空,既表示使用方法的參數類型及參數值作爲key,支持SpEL<br>    condition:觸發條件,只有滿足條件的情況纔會加入緩存,默認爲空,既表示全部都加入緩存,支持SpEL</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    allEntries:CacheEvict參數,true表示清除value中的全部緩存,默認爲false</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  不多說,直接上代碼:</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">  </p><div class=\"cnblogs_code\" style=\"background-color: rgb(245, 245, 245); border: 1px solid rgb(204, 204, 204); padding: 5px; overflow: auto; margin: 5px 0px; color: rgb(0, 0, 0); font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div><pre style=\"margin-bottom: 0px; line-height: 1.42857; font-family: &quot;Courier New&quot; !important; font-size: 12px !important;\"><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">@Service\r\n</span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">class</span> CacheDemoServiceImpl <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">implements</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> CacheDemoService {\r\n\r\n    </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">/**</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">\r\n     * 緩存的key\r\n     </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">*/</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">static</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">final</span> String THING_ALL_KEY   = \"\\\"thing_all\\\"\"<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">;\r\n    </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">/**</span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">\r\n     * value屬性表示使用哪個緩存策略,緩存策略在ehcache.xml\r\n     </span><span style=\"color: rgb(0, 128, 0); line-height: 1.5 !important;\">*/</span>\r\n    <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">static</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">final</span> String DEMO_CACHE_NAME = \"demo\"<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">;\r\n   \r\n    @CacheEvict(value </span>= DEMO_CACHE_NAME,key =<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> THING_ALL_KEY)\r\n    @Override\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">void</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> create(Thing thing){\r\n        Long id </span>=<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> getNextId ();\r\n        thing.setId (id);\r\n        data.put (id, thing);\r\n    } \r\n      \r\n     @Cacheable(value </span>=<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> DEMO_CACHE_NAME,key = \"#thing.getId()+\'thing\'\")\r\n    @Override\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> Thing findById(Long id){\r\n        System.err.println (</span>\"沒有走緩存!\" +<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> id);\r\n        </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">return</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> data.get (id);\r\n    }\r\n\r\n      @Cacheable(value </span>= DEMO_CACHE_NAME,key =<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> THING_ALL_KEY)\r\n    @Override\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> List&lt;Thing&gt;<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> findAll(){\r\n        </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">return</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> Lists.newArrayList (data.values ());\r\n    }\r\n   \r\n   </span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">\r\n      @Override\r\n    @CachePut(value </span>= DEMO_CACHE_NAME,key = \"#thing.getId()+\'thing\'\"<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\">)\r\n    @CacheEvict(value </span>= DEMO_CACHE_NAME,key =<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> THING_ALL_KEY)\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> Thing update(Thing thing){\r\n        System.out.println (thing);\r\n        data.put (thing.getId (), thing);\r\n        </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">return</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> thing;\r\n    }\r\n\r\n    @CacheEvict(value </span>=<span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> DEMO_CACHE_NAME)\r\n    @Override\r\n    </span><span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">public</span> <span style=\"color: rgb(0, 0, 255); line-height: 1.5 !important;\">void</span><span style=\"color: rgb(0, 0, 0); line-height: 1.5 !important;\"> delete(Long id){\r\n        data.remove (id);\r\n    }\r\n   \r\n}</span></pre><div class=\"cnblogs_code_toolbar\" style=\"margin-top: 5px;\"><span class=\"cnblogs_code_copy\" style=\"padding-right: 5px; line-height: 1.5 !important;\"><a title=\"複製代碼\" style=\"color: rgb(86, 182, 233); background-color: rgb(245, 245, 245) !important; border: none !important;\"><img src=\"http://common.cnblogs.com/images/copycode.gif\" alt=\"複製代碼\" style=\"max-width: 900px; border-width: initial !important; border-style: none !important;\"></a></span></div></div><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">    5.只需要通過註解在service層方法上打註解便可以使用緩存,在find**上存入緩存,在delete**,update**上清除緩存。</p><p style=\"margin-top: 10px; margin-right: auto; margin-left: auto; color: rgb(35, 35, 35); font-family: Verdana, Arial, helvetica, sans-seriff; font-size: 14px;\">&nbsp;</p>', 'article', null, null, null, null, '1', null, '0', '1', 'bootdo', '2017-09-24 11:15:18', '2017-09-24 11:15:18');
INSERT INTO `blog_content` VALUES ('110', 'spring boot 圖片上傳後的圖片讀取路徑在win與linux環境配置的差別', null, null, null, '<ol><li><p style=\"margin-bottom: 0px; padding: 0px; color: rgb(69, 69, 69); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;\">win</p><p style=\"margin-bottom: 0px; padding: 0px; color: rgb(69, 69, 69); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;\"></p><div class=\"dp-highlighter bg_java\" style=\"padding: 1px 0px 0px; font-family: Consolas, &quot;Courier New&quot;, Courier, mono, serif; font-size: 12px; background-color: rgb(231, 229, 220); width: 849.412px; overflow-x: auto; overflow-y: hidden; position: relative; color: rgb(69, 69, 69); margin: 18px 0px !important;\"><div class=\"bar\" style=\"margin: 0px; padding: 0px 0px 0px 45px;\"><div class=\"tools\" style=\"margin: 0px; padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: rgb(248, 248, 248); border-left: 3px solid rgb(108, 226, 108); border-right: 1px solid rgb(231, 229, 220);\"><b>[java]</b>&nbsp;<a href=\"http://blog.csdn.net/qq1115094858/article/details/51873698#\" class=\"ViewSource\" title=\"view plain\" style=\"background-image: url(&quot;images/default/ico_plain.gif&quot;); background-position: left top; background-repeat: no-repeat; color: rgb(202, 12, 22); margin: 0px 10px 0px 0px; padding: 1px; outline: none; border: none; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">view plain</a><span class=\"tracking-ad\" data-mod=\"popu_168\" style=\"margin: 0px; padding: 0px;\">&nbsp;<a href=\"http://blog.csdn.net/qq1115094858/article/details/51873698#\" class=\"CopyToClipboard\" title=\"copy\" style=\"background-image: url(&quot;images/default/ico_copy.gif&quot;); background-position: left top; background-repeat: no-repeat; color: rgb(202, 12, 22); margin: 0px 10px 0px 0px; padding: 1px; outline: none; border: none; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">copy</a><div style=\"margin: 0px; padding: 0px; position: absolute; left: 294px; top: 296px; width: 16px; height: 16px; z-index: 99;\"></div></span><span class=\"tracking-ad\" data-mod=\"popu_169\" style=\"margin: 0px; padding: 0px;\"></span></div></div><ol start=\"1\" class=\"dp-j\" style=\"padding: 0px; list-style-position: initial; list-style-image: initial; border-top: none; border-right: 1px solid rgb(231, 229, 220); border-bottom: none; border-left: none; border-image: initial; background-color: rgb(255, 255, 255); color: rgb(92, 92, 92); margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important;\"><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Component</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">class</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;WebConfigurer&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">extends</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;WebMvcConfigurerAdapter&nbsp;{&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Override</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">void</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;addResourceHandlers(ResourceHandlerRegistry&nbsp;registry)&nbsp;{&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry.addResourceHandler(<span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"/files/**\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">).addResourceLocations(</span><span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"file:///E:/var/spring/uploaded_files/\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">);&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">}&nbsp;&nbsp;</span></li></ol></div><span style=\"color: rgb(69, 69, 69); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;\">linux</span><br style=\"color: rgb(69, 69, 69); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;\"><div class=\"dp-highlighter bg_java\" style=\"padding: 1px 0px 0px; font-family: Consolas, &quot;Courier New&quot;, Courier, mono, serif; font-size: 12px; background-color: rgb(231, 229, 220); width: 849.412px; overflow-x: auto; overflow-y: hidden; position: relative; color: rgb(69, 69, 69); margin: 18px 0px !important;\"><div class=\"bar\" style=\"margin: 0px; padding: 0px 0px 0px 45px;\"><div class=\"tools\" style=\"margin: 0px; padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: rgb(248, 248, 248); border-left: 3px solid rgb(108, 226, 108); border-right: 1px solid rgb(231, 229, 220);\"><b>[java]</b>&nbsp;<a href=\"http://blog.csdn.net/qq1115094858/article/details/51873698#\" class=\"ViewSource\" title=\"view plain\" style=\"background-image: url(&quot;images/default/ico_plain.gif&quot;); background-position: left top; background-repeat: no-repeat; color: rgb(202, 12, 22); margin: 0px 10px 0px 0px; padding: 1px; outline: none; border: none; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">view plain</a><span class=\"tracking-ad\" data-mod=\"popu_168\" style=\"margin: 0px; padding: 0px;\">&nbsp;<a href=\"http://blog.csdn.net/qq1115094858/article/details/51873698#\" class=\"CopyToClipboard\" title=\"copy\" style=\"background-image: url(&quot;images/default/ico_copy.gif&quot;); background-position: left top; background-repeat: no-repeat; color: rgb(202, 12, 22); margin: 0px 10px 0px 0px; padding: 1px; outline: none; border: none; font-size: 9px; display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">copy</a><div style=\"margin: 0px; padding: 0px; position: absolute; left: 294px; top: 528px; width: 16px; height: 16px; z-index: 99;\"></div></span><span class=\"tracking-ad\" data-mod=\"popu_169\" style=\"margin: 0px; padding: 0px;\"></span></div></div><ol start=\"1\" class=\"dp-j\" style=\"padding: 0px; list-style-position: initial; list-style-image: initial; border-top: none; border-right: 1px solid rgb(231, 229, 220); border-bottom: none; border-left: none; border-image: initial; background-color: rgb(255, 255, 255); color: rgb(92, 92, 92); margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important;\"><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Component</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">class</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;WebConfigurer&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">extends</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;WebMvcConfigurerAdapter&nbsp;{&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Override</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; font-weight: bold; border: none; color: rgb(0, 102, 153); background-color: inherit;\">void</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;addResourceHandlers(ResourceHandlerRegistry&nbsp;registry)&nbsp;{&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;registry.addResourceHandler(<span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"/files/**\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">).addResourceLocations(</span><span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"file:///var/spring/uploaded_files\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">);&nbsp;&nbsp;</span></span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; color: inherit; line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"\" style=\"margin-left: 40px; list-style: decimal; border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin-top: 0px !important; margin-right: 0px !important; margin-bottom: 0px !important; padding: 0px 3px 0px 10px !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">}&nbsp;&nbsp;</span></li><li></li></ol></div></li></ol>', 'article', null, null, null, null, '1', null, '1', '1', 'bootdo', '2017-09-24 09:15:35', '2017-09-24 09:15:35');
INSERT INTO `blog_content` VALUES ('111', 'Springmvc提交日期類型參數', null, null, null, '<ol style=\"color: rgb(63, 63, 63); font-family: &quot;microsoft yahei&quot;; font-size: 15px;\"><li><p style=\"margin-bottom: 1.1em; padding: 0px;\">背景介紹&nbsp;<br>在springmvc框架中,前臺傳入到後臺的form會經過springmvc自動封裝到pojo類中,後臺接受的時候可以在參數內直接接受這個java類。</p></li><li><p style=\"margin-bottom: 1.1em; padding: 0px;\">傳參&nbsp;<br>通常情況下,前臺的表單的類型諸如int,string等,都會根據pojo中字段的類型自動轉換。所以爲我們省去了不少麻煩,但很可惜其中不包括日期類型。</p></li><li><p style=\"margin-bottom: 1.1em; padding: 0px;\">原因&nbsp;<br>因爲日期的格式多種多樣,spring自身不適合對其進行封裝。好在spring給出了便捷的方法給我們自己轉換數據類型。</p></li><li><p style=\"margin-bottom: 1.1em; padding: 0px;\">具體實現</p></li></ol><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(63, 63, 63); font-family: &quot;microsoft yahei&quot;; font-size: 15px;\">在controller層中,加入以下代碼段</p><pre class=\"prettyprint\" name=\"code\" style=\"white-space: nowrap; position: relative; overflow-y: hidden; margin-bottom: 1.1em; font-family: &quot;Source Code Pro&quot;, monospace; padding: 5px 5px 5px 60px; font-size: 14px; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-width: 0px; border-color: rgb(136, 136, 136); border-radius: 0px;\"><code class=\"hljs java has-numbering\" style=\"display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; word-wrap: normal;\"><span class=\"hljs-annotation\" style=\"color: rgb(155, 133, 157);\">@InitBinder</span>\r\n<span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">public</span> <span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">void</span> <span class=\"hljs-title\">initBinder</span>(WebDataBinder binder) {\r\n    SimpleDateFormat dateFormat = <span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">new</span> SimpleDateFormat(<span class=\"hljs-string\" style=\"color: rgb(0, 136, 0);\">\"yyyy-MM-dd\"</span>);\r\n    dateFormat.setLenient(<span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">false</span>);\r\n    binder.registerCustomEditor(Date.class, <span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">new</span> CustomDateEditor(dateFormat, <span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">true</span>));<span class=\"hljs-comment\" style=\"color: rgb(136, 0, 0);\">//true:允許輸入空值,false:不能爲空值</span>\r\n}</code><ul class=\"pre-numbering\" style=\"position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;\"><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">1</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">2</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">3</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">4</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">5</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">6</li></ul></pre><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(63, 63, 63); font-family: &quot;microsoft yahei&quot;; font-size: 15px;\">可以解決這個問題。但是這個時候Date類型的參數是null的話,還是會報錯。採用另外一種方式則更好,爲null也不會報錯,就是把請求參數封裝爲一個vo類,在對應的類屬性上加上註解,這樣</p><pre class=\"prettyprint\" name=\"code\" style=\"white-space: nowrap; position: relative; overflow-y: hidden; margin-bottom: 1.1em; font-family: &quot;Source Code Pro&quot;, monospace; padding: 5px 5px 5px 60px; font-size: 14px; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-width: 0px; border-color: rgb(136, 136, 136); border-radius: 0px;\"><code class=\"hljs java has-numbering\" style=\"display: block; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; word-wrap: normal;\"><span class=\"hljs-annotation\" style=\"color: rgb(155, 133, 157);\">@DateTimeFormat</span>(iso = ISO.DATE_TIME, pattern = <span class=\"hljs-string\" style=\"color: rgb(0, 136, 0);\">\"w:yyyy\"</span>)\r\n<span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">private</span> Date startTime;\r\n或者\r\n<span class=\"hljs-annotation\" style=\"color: rgb(155, 133, 157);\">@DateTimeFormat</span>(pattern=<span class=\"hljs-string\" style=\"color: rgb(0, 136, 0);\">\"yyyy-MM-dd HH:mm:ss\"</span>)\r\n<span class=\"hljs-keyword\" style=\"color: rgb(0, 0, 136);\">private</span> Date lastLoginDate;</code><ul class=\"pre-numbering\" style=\"position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; border-right: 1px solid rgb(221, 221, 221); list-style: none; text-align: right;\"><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">1</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">2</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">3</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">4</li><li style=\"padding: 0px 5px; list-style: none; margin-left: 0px;\">5</li></ul></pre><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(63, 63, 63); font-family: &quot;microsoft yahei&quot;; font-size: 15px;\">另外如果使用驗證框架,方法參數這樣寫(@Valid XxxParam param, BindingResult binding) ,就能直接通過BindingResult得到驗證結果了。</p>', 'article', null, null, null, null, '1', null, '1', '1', 'bootdo', '2017-09-25 21:34:51', '2017-09-25 21:34:51');
INSERT INTO `blog_content` VALUES ('112', ' SpringBoot 在啓動時運行代碼', null, null, null, '<p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">在Spring boot項目的實際開發中,我們有時需要項目服務啓動時加載一些數據或預先完成某些動作。爲了解決這樣的問題,Spring&nbsp;boot 爲我們提供了一個方法:通過實現接口 CommandLineRunner 來實現這樣的需求。</p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">實現方式:只需要一個類即可,無需其他配置。&nbsp;</p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">實現步驟:</p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">1.創建實現接口 CommandLineRunner 的類 MyStartupRunnerTest</p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\"></p><div class=\"dp-highlighter bg_java\" style=\"font-family: Consolas, &quot;Courier New&quot;, Courier, mono, serif; font-size: 12px; background-color: rgb(231, 229, 220); width: 936.531px; overflow-x: auto; overflow-y: hidden; padding-top: 1px; position: relative; border-color: rgb(204, 204, 204); color: rgb(85, 85, 85); margin: 18px 0px !important;\"><div class=\"bar\" style=\"padding-left: 45px;\"><div class=\"tools\" style=\"padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: rgb(248, 248, 248); border-left: 3px solid rgb(108, 226, 108); border-right: 1px solid rgb(231, 229, 220);\"><strong>[java]</strong>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"ViewSource\" title=\"view plain\" style=\"background-image: url(&quot;images/default/ico_plain.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">view plain</a>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"CopyToClipboard\" title=\"copy\" style=\"background-image: url(&quot;images/default/ico_copy.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">copy</a><div style=\"position: absolute; left: 559px; top: 655px; width: 18px; height: 18px; z-index: 99;\"></div><div style=\"position: absolute; left: 721px; top: 723px; width: 18px; height: 18px; z-index: 99;\"></div></div></div><ol start=\"1\" class=\"dp-j\" style=\"padding: 0px; border: none; list-style-position: initial; list-style-image: initial; background-color: rgb(255, 255, 255); color: rgb(92, 92, 92); margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important;\"><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">package</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;com.energy;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.boot.CommandLineRunner;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.core.annotation.Order;&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.stereotype.Component;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">/**</span>&nbsp;</span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">&nbsp;*&nbsp;Created&nbsp;by&nbsp;CavanLiu&nbsp;on&nbsp;2017/2/28&nbsp;0028.</span>&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">&nbsp;*/</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Component</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Order</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">(value=</span><span class=\"number\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(192, 0, 0); background-color: inherit;\">1</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">)</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">class</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;MyStartupRunnerTest&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">implements</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;CommandLineRunner&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">{&nbsp;&nbsp;</span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Override</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">void</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;run(String...&nbsp;args)&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">throws</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;Exception&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"&gt;&gt;&gt;&gt;This&nbsp;is&nbsp;MyStartupRunnerTest&nbsp;Order=1.&nbsp;Only&nbsp;testing&nbsp;CommandLineRunner...&lt;&lt;&lt;&lt;\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">);&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">}&nbsp;&nbsp;</span></li></ol></div><p style=\"margin-bottom: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Arial; font-size: 14px;\"></p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">2.創建實現接口CommandLineRunner 的類 MyStartupRunnerTest2</p><div class=\"dp-highlighter bg_java\" style=\"font-family: Consolas, &quot;Courier New&quot;, Courier, mono, serif; font-size: 12px; background-color: rgb(231, 229, 220); width: 936.531px; overflow-x: auto; overflow-y: hidden; padding-top: 1px; position: relative; border-color: rgb(204, 204, 204); color: rgb(85, 85, 85); margin: 18px 0px !important;\"><div class=\"bar\" style=\"padding-left: 45px;\"><div class=\"tools\" style=\"padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: rgb(248, 248, 248); border-left: 3px solid rgb(108, 226, 108); border-right: 1px solid rgb(231, 229, 220);\"><strong>[java]</strong>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"ViewSource\" title=\"view plain\" style=\"background-image: url(&quot;images/default/ico_plain.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">view plain</a>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"CopyToClipboard\" title=\"copy\" style=\"background-image: url(&quot;images/default/ico_copy.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">copy</a><div style=\"position: absolute; left: 559px; top: 1094px; width: 18px; height: 18px; z-index: 99;\"></div><div style=\"position: absolute; left: 721px; top: 1160px; width: 18px; height: 18px; z-index: 99;\"></div></div></div><ol start=\"1\" class=\"dp-j\" style=\"padding: 0px; border: none; list-style-position: initial; list-style-image: initial; background-color: rgb(255, 255, 255); color: rgb(92, 92, 92); margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important;\"><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">package</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;com.energy;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.boot.CommandLineRunner;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.core.annotation.Order;&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">import</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;org.springframework.stereotype.Component;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">/**</span>&nbsp;</span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">&nbsp;*&nbsp;Created&nbsp;by&nbsp;CavanLiu&nbsp;on&nbsp;2017/2/28&nbsp;0028.</span>&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"comment\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 130, 0); background-color: inherit;\">&nbsp;*/</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Component</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Order</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">(value=</span><span class=\"number\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(192, 0, 0); background-color: inherit;\">2</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">)</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">class</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;MyStartupRunnerTest2&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">implements</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;CommandLineRunner&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">{&nbsp;&nbsp;</span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"annotation\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(100, 100, 100); background-color: inherit;\">@Override</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;&nbsp;</span></span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;<span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">public</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">void</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;run(String...&nbsp;args)&nbsp;</span><span class=\"keyword\" style=\"margin: 0px; padding: 0px; border: none; color: rgb(0, 102, 153); background-color: inherit; font-weight: bold;\">throws</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&nbsp;Exception&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;{&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;&nbsp;System.out.println(<span class=\"string\" style=\"margin: 0px; padding: 0px; border: none; color: blue; background-color: inherit;\">\"&gt;&gt;&gt;&gt;This&nbsp;is&nbsp;MyStartupRunnerTest&nbsp;Order=2.&nbsp;Only&nbsp;testing&nbsp;CommandLineRunner...&lt;&lt;&lt;&lt;\"</span><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">);&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&nbsp;&nbsp;&nbsp;&nbsp;}&nbsp;&nbsp;</span></li><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">}&nbsp;&nbsp;</span></li></ol></div><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">3.啓動Spring boot後查看控制檯輸出信息,如下所示:</p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\"></p><div class=\"dp-highlighter bg_plain\" style=\"font-family: Consolas, &quot;Courier New&quot;, Courier, mono, serif; font-size: 12px; background-color: rgb(231, 229, 220); width: 936.531px; overflow-x: auto; overflow-y: hidden; padding-top: 1px; position: relative; border-color: rgb(204, 204, 204); color: rgb(85, 85, 85); margin: 18px 0px !important;\"><div class=\"bar\" style=\"padding-left: 45px;\"><div class=\"tools\" style=\"padding: 3px 8px 10px 10px; font-stretch: normal; font-size: 9px; line-height: normal; font-family: Verdana, Geneva, Arial, Helvetica, sans-serif; color: silver; background-color: rgb(248, 248, 248); border-left: 3px solid rgb(108, 226, 108); border-right: 1px solid rgb(231, 229, 220);\"><strong>[plain]</strong>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"ViewSource\" title=\"view plain\" style=\"background-image: url(&quot;images/default/ico_plain.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">view plain</a>&nbsp;<a target=\"_blank\" href=\"http://blog.csdn.net/mimica247706624/article/details/58596490#\" class=\"CopyToClipboard\" title=\"copy\" style=\"background-image: url(&quot;images/default/ico_copy.gif&quot;); background-position: left top; background-repeat: no-repeat; border: none; padding: 1px; margin: 0px 10px 0px 0px; font-size: 9px; color: rgb(160, 160, 160); display: inline-block; width: 16px; height: 16px; text-indent: -2000px;\">copy</a><div style=\"position: absolute; left: 563px; top: 1532px; width: 18px; height: 18px; z-index: 99;\"></div><div style=\"position: absolute; left: 725px; top: 1597px; width: 18px; height: 18px; z-index: 99;\"></div></div></div><ol start=\"1\" style=\"padding: 0px; border: none; list-style-position: initial; list-style-image: initial; background-color: rgb(255, 255, 255); color: rgb(92, 92, 92); margin-right: 0px !important; margin-bottom: 1px !important; margin-left: 45px !important;\"><li class=\"alt\" style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; color: inherit; line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\"><span style=\"margin: 0px; padding: 0px; border: none; background-color: inherit;\">&gt;&gt;&gt;&gt;This&nbsp;is&nbsp;MyStartupRunnerTest&nbsp;Order=1.&nbsp;Only&nbsp;testing&nbsp;CommandLineRunner...&lt;&lt;&lt;&lt;&nbsp;&nbsp;</span></span></li><li style=\"border-top: none; border-right: none; border-bottom: none; border-left: 3px solid rgb(108, 226, 108); border-image: initial; list-style-type: decimal-leading-zero; list-style-image: initial; background-color: rgb(248, 248, 248); line-height: 18px; margin: 0px !important; padding: 0px 3px 0px 10px !important; list-style-position: outside !important;\"><span style=\"margin: 0px; padding: 0px; border: none; color: black; background-color: inherit;\">&gt;&gt;&gt;&gt;This&nbsp;is&nbsp;MyStartupRunnerTest2&nbsp;Order=2.&nbsp;Only&nbsp;testing&nbsp;CommandLineRunner...&lt;&lt;&lt;&lt;&nbsp;&nbsp;</span></li></ol></div><p style=\"margin-bottom: 0px; padding: 0px; color: rgb(85, 85, 85); font-family: Arial; font-size: 14px;\"></p><p style=\"margin-bottom: 1.1em; padding: 0px; color: rgb(85, 85, 85); font-family: &quot;microsoft yahei&quot;; font-size: 14px;\">4.Application啓動類代碼略。</p><p><span style=\"color: rgb(85, 85, 85); font-family: Arial; font-size: 14px;\">說明:CommandLineRunner接口的運行順序是依據@Order註解的value由小到大執行,即value值越小優先級越高。</span><br></p>', 'article', null, null, null, null, '1', null, '1', '1', 'bootdo', '2017-09-26 15:18:15', '2017-09-26 15:18:15');
INSERT INTO `blog_content` VALUES ('115', 'communication', null, null, null, '<h2 style=\"color: rgb(103, 106, 108);\"><span style=\"font-family: Times; font-size: 17.5px; font-weight: bold;\"><a href=\"https://jq.qq.com/?_wv=1027&amp;k=5EfMNFL\" target=\"_blank\" style=\"color: rgb(42, 100, 150); text-decoration-line: underline; outline: 0px;\">qq羣 669039323</a></span></h2>', null, null, 'communication', null, null, '1', null, '0', '1', 'bootdo', '2017-09-30 14:43:30', '2017-09-30 14:43:30');
INSERT INTO `blog_content` VALUES ('116', 'ablout', null, null, null, '<h1 style=\"box-sizing: inherit; font-size: 28px; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); min-height: 1rem; -webkit-font-smoothing: antialiased; cursor: text; position: relative; margin-top: 0px !important;\">BootDo 面向學習型的開源框架</h1><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"平臺簡介\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E5%B9%B3%E5%8F%B0%E7%AE%80%E4%BB%8B\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>平臺簡介</h2><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">BootDo是高效率,低封裝,面向學習型,面向微服的<strong style=\"box-sizing: inherit;\">開源</strong>Java EE開發框架。</p><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">BootDo是在SpringBoot基礎上搭建的一個Java基礎開發平臺,MyBatis爲數據訪問層,ApacheShiro爲權限授權層,Ehcahe對常用數據進行緩存。</p><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">BootDo主要定位於後臺管理系統學習交流,已內置後臺管理系統的基礎功能和高效的<strong style=\"box-sizing: inherit;\">代碼生成</strong>工具, 包括:系統權限組件、數據權限組件、數據字典組件、核心工具組件、視圖操作組件、工作流組件、代碼生成等。 前端界面風格採用了結構簡單、性能優良、頁面美觀大氣的Twitter Bootstrap頁面展示框架。 採用分層設計、雙重驗證、提交數據安全編碼、密碼加密、訪問驗證、數據權限驗證。 使用Maven做項目管理,提高項目的易開發性、擴展性。</p><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">BootDo目前包括以下四大模塊,系統管理(SYS)模塊、 內容管理(CMS)模塊、在線辦公(OA)模塊、代碼生成(GEN)模塊。&nbsp;<strong style=\"box-sizing: inherit;\">系統管理模塊</strong>&nbsp;,包括企業組織架構(用戶管理、機構管理、區域管理)、 菜單管理、角色權限管理、字典管理等功能;&nbsp;<strong style=\"box-sizing: inherit;\">內容管理模塊</strong>&nbsp;,包括內容管理(文章、鏈接),欄目管理、站點管理、 公共留言、文件管理、前端網站展示等功能;&nbsp;<strong style=\"box-sizing: inherit;\">在線辦公模塊</strong>&nbsp;,提供簡單的請假流程實例;<strong style=\"box-sizing: inherit;\">代碼生成模塊</strong>&nbsp;,完成重複的工作。</p><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">BootDo 提供了常用工具進行封裝,包括日誌工具、緩存工具、服務器端驗證、數據字典、當前組織機構數據 (用戶、機構、區域)以及其它常用小工具等。另外還提供一個強大的在線&nbsp;<strong style=\"box-sizing: inherit;\">代碼生成</strong>&nbsp;工具。</p><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"內置功能\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E5%86%85%E7%BD%AE%E5%8A%9F%E8%83%BD\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>內置功能</h2><ol class=\"task-list\" style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\"><li style=\"box-sizing: inherit; list-style-type: decimal;\">用戶管理:用戶是系統操作者,該功能主要完成系統用戶配置。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">機構管理:配置系統組織機構(公司、部門、小組),樹結構展現,可隨意調整上下級。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">區域管理:系統城市區域模型,如:國家、省市、地市、區縣的維護。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">菜單管理:配置系統菜單,操作權限,按鈕權限標識等。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">角色管理:角色菜單權限分配、設置角色按機構進行數據範圍權限劃分。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">字典管理:對系統中經常使用的一些較爲固定的數據進行維護,如:是否、男女、類別、級別等。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">操作日誌:系統正常操作日誌記錄和查詢;系統異常信息日誌記錄和查詢。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">連接池監視:監視當期系統數據庫連接池狀態,可進行分析SQL找出系統性能瓶頸。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">工作流引擎:實現業務工單流轉、在線流程設計器。</li></ol><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"技術選型\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E6%8A%80%E6%9C%AF%E9%80%89%E5%9E%8B\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>技術選型</h2><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">1、後端</p><ul class=\"task-list\" style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\"><li style=\"box-sizing: inherit; list-style-type: initial;\">核心框架:Spring Boot</li><li style=\"box-sizing: inherit; list-style-type: initial;\">安全框架:Apache Shiro</li><li style=\"box-sizing: inherit; list-style-type: initial;\">模板引擎:Thymeleaf</li><li style=\"box-sizing: inherit; list-style-type: initial;\">持久層框架:MyBatis</li><li style=\"box-sizing: inherit; list-style-type: initial;\">數據庫連接池:Alibaba Druid</li><li style=\"box-sizing: inherit; list-style-type: initial;\">緩存框架:Ehcache 、Redis</li><li style=\"box-sizing: inherit; list-style-type: initial;\">日誌管理:SLF4J</li><li style=\"box-sizing: inherit; list-style-type: initial;\">工具類:Apache Commons、Jackson 、Xstream 1.4、Dozer 5.3、POI 3.9</li></ul><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">2、前端</p><ul class=\"task-list\" style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\"><li style=\"box-sizing: inherit; list-style-type: initial;\">JS框架:jQuery</li><li style=\"box-sizing: inherit; list-style-type: initial;\">客戶端驗證:JQuery Validation</li><li style=\"box-sizing: inherit; list-style-type: initial;\">富文本在線編輯:summernote</li><li style=\"box-sizing: inherit; list-style-type: initial;\">在線文件管理:CKFinder</li><li style=\"box-sizing: inherit; list-style-type: initial;\">數據表格:bootstrapTable</li><li style=\"box-sizing: inherit; list-style-type: initial;\">彈出層:layer</li><li style=\"box-sizing: inherit; list-style-type: initial;\">樹結構控件:jsTree</li></ul><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">4、平臺</p><ul class=\"task-list\" style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\"><li style=\"box-sizing: inherit; list-style-type: initial;\">服務器中間件:SpringBoot內置</li><li style=\"box-sizing: inherit; list-style-type: initial;\">數據庫支持:目前僅提供MySql數據庫的支持,但不限於數據庫,平臺留有其它數據庫支持接口, 你可以很方便的更改爲其它數據庫,如:SqlServer 2008、MySql 5.5、H2等</li><li style=\"box-sizing: inherit; list-style-type: initial;\">開發環境:Java、Eclipse Java EE 、Maven 、Git</li></ul><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"安全考慮\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E5%AE%89%E5%85%A8%E8%80%83%E8%99%91\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>安全考慮</h2><ol class=\"task-list\" style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\"><li style=\"box-sizing: inherit; list-style-type: decimal;\">開發語言:系統採用Java 語言開發,具有卓越的通用性、高效性、平臺移植性和安全性。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">分層設計:(數據庫層,數據訪問層,業務邏輯層,展示層)層次清楚,低耦合,各層必須通過接口才能接入並進行參數校驗(如:在展示層不可直接操作數據庫),保證數據操作的安全。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">雙重驗證:用戶表單提交雙驗證:包括服務器端驗證及客戶端驗證,防止用戶通過瀏覽器惡意修改(如不可寫文本域、隱藏變量篡改、上傳非法文件等),跳過客戶端驗證操作數據庫。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">安全編碼:用戶表單提交所有數據,在服務器端都進行安全編碼,防止用戶提交非法腳本及SQL注入獲取敏感數據等,確保數據安全。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">密碼加密:登錄用戶密碼進行SHA1散列加密,此加密方法是不可逆的。保證密文泄露後的安全問題。</li><li style=\"box-sizing: inherit; list-style-type: decimal;\">強制訪問:系統對所有管理端鏈接都進行用戶身份權限驗證,防止用戶直接填寫url進行訪問。</li></ol><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"演示地址\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E6%BC%94%E7%A4%BA%E5%9C%B0%E5%9D%80\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>演示地址</h2><h6 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; color: rgb(119, 119, 119); margin-top: 20px; font-size: 14px; -webkit-font-smoothing: antialiased; cursor: text; position: relative;\"><a id=\"布嘟開源wwwbootdocom\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E5%B8%83%E5%98%9F%E5%BC%80%E6%BA%90wwwbootdocom\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>布嘟開源<a href=\"http://www.bootdo.com./blog\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word;\">www.bootdo.com</a></h6><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"交流反饋\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E4%BA%A4%E6%B5%81%E5%8F%8D%E9%A6%88\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>交流反饋</h2><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"qq羣-669039323\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#qq%E7%BE%A4-669039323\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>QQ羣 669039323</h2><h2 style=\"box-sizing: inherit; font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-weight: bold; line-height: 1.33em; color: rgb(0, 0, 0); margin-top: 20px; font-size: 24px; padding-bottom: 0.3em; -webkit-font-smoothing: antialiased; cursor: text; position: relative; border-bottom: 1px solid rgb(204, 204, 204);\"><a id=\"版權聲明\" class=\"anchor\" href=\"https://gitee.com/lcg0124/bootdo#%E7%89%88%E6%9D%83%E5%A3%B0%E6%98%8E\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word; display: block; padding-left: 30px; margin-left: -20px; position: absolute; top: 0px; left: 0px; bottom: 0px; outline: none;\"></a>版權聲明</h2><p style=\"box-sizing: inherit; margin-bottom: 15px; line-height: 25px; word-break: break-word; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px;\">本軟件使用&nbsp;<a href=\"http://www.apache.org/licenses/LICENSE-2.0\" style=\"box-sizing: inherit; color: rgb(9, 94, 171); word-wrap: break-word;\">Apache License 2.0</a>&nbsp;協議,請嚴格遵照協議內容</p><ul class=\"task-list\" style=\"box-sizing: inherit; line-height: 24px; padding-left: 30px; color: rgb(64, 72, 91); font-family: -apple-system, BlinkMacSystemFont, &quot;Segoe UI&quot;, Helvetica, Arial, &quot;Apple Color Emoji&quot;, &quot;Segoe UI Emoji&quot;, &quot;Segoe UI Symbol&quot;, &quot;Liberation Sans&quot;, &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, &quot;Hiragino Sans GB&quot;, &quot;Wenquanyi Micro Hei&quot;, &quot;WenQuanYi Zen Hei&quot;, &quot;ST Heiti&quot;, SimHei, &quot;WenQuanYi Zen Hei Sharp&quot;, sans-serif; font-size: 15px; margin-bottom: 0px !important;\"><li class=\"task-list-item\" style=\"box-sizing: inherit; list-style-type: initial;\"><input type=\"checkbox\" class=\"task-list-item-checkbox\" checked=\"\" disabled=\"\" style=\"margin-top: 0px; cursor: default; transition: border 0.2s linear, box-shadow 0.2s linear; box-shadow: rgba(0, 0, 0, 0.1) 0px 1px 3px inset; vertical-align: middle;\">&nbsp;注:已上內容爲整體規化,部分功能還在實現中</li></ul>', null, null, 'about', null, null, '1', null, '0', '1', 'bootdo', '2017-09-30 14:43:09', '2017-09-30 14:43:09');
INSERT INTO `blog_content` VALUES ('117', '頁面加載速度優化建議', null, null, null, '<p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">1、合併Js文件和CSS</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">將JS代碼和CSS樣式分別合併到一個共享的文件,這樣不僅能簡化代碼,而且在執行JS文件的時候,如果JS文件比較多,就需要進行多次“Get”請求,延長加載速度,將JS文件合併在一起後,自然就減少了Get請求次數,提高了加載速度。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">2、Sprites圖片技術</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">Spriting是一種網頁圖片應用處理方式,它是將一個頁面涉及到的所有零星圖片都包含到一張大圖中去,然後利用CSS技術展現出來。這樣一來,當訪問該頁面時,載入的圖片就不會像以前那樣一幅一幅地慢慢顯示出來了,可以減少了整個網頁的圖片大小,並且利用CSSSprites能很好地減少網頁的http請求,從而大大的提高頁面的性能。CSSSprites在國內很多人叫css精靈,很早就有了,在很多大型網站都有用到,特別是一些所有頁面都存在的圖標用得比較多,很好的提升加載速度。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">3、壓縮文本和圖片</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">壓縮技術如gzip可以有效減少頁面加載的時間。包括HTML,XML,JSON(JavaScript對象符號),JavaScript和CSS等,壓縮率都可以在大小70%左右。文本壓縮用得比較多,一般直接在空間開啓就行,而圖片的壓縮就比較隨意,很多都是直接上傳,其實還有很大的壓縮空間。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">4、延遲顯示可見區域外的內容</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">爲了確保用戶可以更快地看見可見區域的網頁可以延遲加載或展現可見區域外的內容,爲了避免頁面變形,可以使用佔位符標籤制定正確的高度和寬度。比如WP的jQueryImage LazyLoad插件就可以在用戶停留在第一屏的時候,不加載任何第一屏以下的圖片信息,只有當用戶把鼠標往下滾動的時候,這些圖片纔開始加載。這樣很明顯提升可見區域的加載速度,提高用戶體驗。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">5、確保功能圖片優先加載</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">網站主要考慮可用性的重要性,一個功能按鈕要提前加載出來,用戶進入下載頁,一個只需要8s時間的下載花了5s在等待、尋找下載按鈕圖片,誰能忍受?</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">6、重新佈置Call-to-Action按鈕</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">其實這個和上面一條是差不多的,都是從用戶體驗速度着手,跳過了網頁的整體加載速度。速度沒變,只是讓一些行爲按鈕提前,Call-to-Action按鈕一般習慣設計在頁面底部,這樣的習慣對於用戶來說並不總是好的,購買用戶需要等到最下面加載出來才能點擊下一步操作。可以調整CTA按鈕的位置或使用滑動的圖片按鈕。很多大型購物網站的加入購物車就是這種類型。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">7、圖片格式優化</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">不恰當的圖像格式是一種極爲常見的減慢加載速度的罪魁禍首。正確的圖片格式可以讓圖片縮小數倍,如果保存爲最佳格式。可以節省大量帶寬,減少處理時間時間,大大加快頁面加載速度,這是一種很常見的做法。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">8、使用 Progressive JPEGs</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">ProgressiveJPEGs圖片是JPEG格式的一個特殊變種,名爲“高級JPEG”。在創建高級JPEG文件時,數據是這樣安排的:在裝入圖像時,開始只顯示一個模糊的圖像,隨着數據的裝入,圖像逐步變得清晰。它相當於交織的GIF格式的圖片。高級JPEG主要是考慮到使用調制解調器的慢速網絡而設計的,快速網絡的使用者通常不會體會到它和正常JPEG格式圖片的區別。對於網速比較慢的用戶,這無疑有很好的體驗。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">9、精簡代碼</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">這個可以說是最直接的一個方法,也是用得比較多的,對網頁代碼進行瘦身,刪除不必要的沉冗代碼,比如不必要的空格、換行符、註釋等,包括JS代碼中的無用代碼也需要清除。其中對於註釋代碼的清除可能有些人存在誤區,甚至有的在裏面堆砌關鍵詞。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">10、延遲加載和執行非必要腳本</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">網頁中有很多腳本是在頁面完全加載完前都不需要執行的,可以延遲加載和執行非必要腳本。這些腳本可以在onload事件之後執行,避免對網頁上重要內容的呈現造成影響。這些腳本可能是你自己網頁的甲苯,往往更多的是一些第三方腳本,這樣的有很多,比如評論、廣告、智能推薦、百度雲圖、分享等等,這些完全可以等主體內容加載完後再執行。</p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\"><span style=\"font-weight: 700;\">11、使用AJAX</span></p><p style=\"margin-bottom: 24px; color: rgb(14, 14, 14); font-family: Arial, &quot;Hiragino Sans GB&quot;, 冬青黑, &quot;Microsoft YaHei&quot;, 微軟雅黑, SimSun, 宋體, Helvetica, Tahoma, &quot;Arial sans-serif&quot;; font-size: 16px; text-align: justify;\">AJAX即“Asynchronous Javascript +XML“,是指一種創建交互式網頁應用的網頁開發技術。通過在後臺與服務器進行少量數據交換,AJAX可以使網頁實現異步更新。這意味着可以在不重新加載整個網頁的情況下,對網頁的某部分進行更新。傳統的網頁(不使用AJAX)如果需要更新內容,必須重載整個網頁面。</p>', null, null, '', null, null, '1', null, '0', '1', 'bootdo', '2017-09-30 16:13:35', '2017-09-30 16:13:35');
INSERT INTO `blog_content` VALUES ('118', 'elementUI select組件使用詳解', null, null, null, '<article style=\"padding: 20px 0px; border-top: 1px solid rgb(228, 235, 244); border-left: 1px solid rgb(228, 235, 244); border-right: 1px solid rgb(228, 235, 244); color: rgb(51, 51, 51); font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun; font-size: 16px;\"><div id=\"article_content\" class=\"article_content csdn-tracking-statistics\" data-mod=\"popu_307\" data-dsm=\"post\" style=\"margin: 0px 0px 50px; padding: 20px 30px 0px; color: rgb(69, 69, 69); overflow: hidden;\"><div class=\"markdown_views\" style=\"margin: 0px; padding: 0px; font-family: &quot;microsoft yahei&quot;; font-size: 15px; color: rgb(63, 63, 63);\"><h1 id=\"elementui-select組件使用詳解\" style=\"margin-top: 0.8em; margin-bottom: 0.8em; font-size: 2.6em; font-family: inherit; padding: 0px;\">elementUI select組件使用詳解</h1><ul style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 0px; list-style-position: initial; list-style-image: initial;\"><li style=\"margin: 0px 0px 0px 40px; padding: 0px; list-style: disc;\"><strong>動態生成option選項</strong></li><li style=\"margin: 0px 0px 0px 40px; padding: 0px; list-style: disc;\"><strong>option選項綁定對應的文本值和value值</strong></li><li style=\"margin: 0px 0px 0px 40px; padding: 0px; list-style: disc;\"><strong>作爲表單項目,新增、編輯功能</strong></li><li style=\"margin: 0px 0px 0px 40px; padding: 0px; list-style: disc;\"><strong>對選項改變後觸發相關事件</strong></li></ul><pre class=\"prettyprint\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; font-size: 14px; white-space: nowrap; padding: 5px 5px 5px 60px; margin-bottom: 1.1em; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-color: rgba(128, 128, 128, 0.075); border-radius: 0px; position: relative; overflow-y: hidden;\"><code class=\"hljs lasso has-numbering\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; word-wrap: normal;\"><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>div id<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"app\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n    <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span> :model<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"form\"</span>  ref<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"form\"</span> label<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-width</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"100px\"</span> class<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"demo-ruleForm\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n        <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span><span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-item</span> label<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"姓名選擇\"</span> prop<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"typeId\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n            <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-select</span> v<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-model</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"form.typeId\"</span> placeholder<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"請選擇\"</span> @change<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"change\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n                <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-option</span> v<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-for</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"item in items\"</span> :label<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"item.name\"</span> :value<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"item.id\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-option</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n            <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-select</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n        <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span><span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-item</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n        <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span><span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-item</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n            <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span> <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">type</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"primary\"</span> @click<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"add()\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>新增<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n            <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span> <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">type</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"primary\"</span> @click<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"edit()\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>編輯<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n            <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span> @click<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">=</span><span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"cancel()\"</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>取消<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-button</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n        <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span><span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-item</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n    <span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/el<span class=\"hljs-attribute\" style=\"margin: 0px; padding: 0px;\">-form</span><span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span>\r\n<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&lt;</span>/div<span class=\"hljs-subst\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 0);\">&gt;</span></code><ul class=\"pre-numbering\" style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; list-style: none; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; border-right: 1px solid rgb(221, 221, 221); text-align: right;\"><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">1</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">2</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">3</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">4</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">5</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">6</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">7</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">8</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">9</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">10</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">11</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">12</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">13</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">14</li></ul></pre><pre class=\"prettyprint\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; font-size: 14px; white-space: nowrap; padding: 5px 5px 5px 60px; margin-bottom: 1.1em; line-height: 1.45; background-color: rgba(128, 128, 128, 0.05); border-color: rgba(128, 128, 128, 0.075); border-radius: 0px; position: relative; overflow-y: hidden;\"><code class=\"hljs xml has-numbering\" style=\"font-family: &quot;Source Code Pro&quot;, monospace; white-space: pre; background-image: initial; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; display: block; word-wrap: normal;\"><span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">script</span>&gt;</span><span class=\"javascript\" style=\"margin: 0px; padding: 0px;\">\r\n    <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">var</span> vm = <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">new</span> Vue({\r\n        el:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"#app\"</span>,\r\n        mounted(){\r\n            <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.getData();\r\n        },\r\n        data:{\r\n            form:{\r\n                typeId:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\'\'</span>\r\n            },\r\n            items:[],\r\n            datas:[{name:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"senbo\"</span>,id:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\'1\'</span>},{name:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"muse\"</span>,id:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\'2\'</span>},{name:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"bobo\"</span>,id:<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\'3\'</span>}]\r\n        },\r\n        methods:{\r\n            getData:<span class=\"hljs-function\" style=\"margin: 0px; padding: 0px;\"><span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">function</span><span class=\"hljs-params\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">()</span>{</span>\r\n                <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.items = <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.datas; \r\n\r\n            },\r\n            add:<span class=\"hljs-function\" style=\"margin: 0px; padding: 0px;\"><span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">function</span><span class=\"hljs-params\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">()</span>{</span>\r\n                <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.form.typeId = <span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"\"</span>;\r\n            },\r\n            cancel(){\r\n                 <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.form.typeId = <span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"\"</span>;   \r\n            },\r\n            change:<span class=\"hljs-function\" style=\"margin: 0px; padding: 0px;\"><span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">function</span><span class=\"hljs-params\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">()</span>{</span>\r\n                console.log(<span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.form.typeId)\r\n            },\r\n            edit:<span class=\"hljs-function\" style=\"margin: 0px; padding: 0px;\"><span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">function</span><span class=\"hljs-params\" style=\"margin: 0px; padding: 0px; color: rgb(102, 0, 102);\">()</span>{</span>\r\n                <span class=\"hljs-keyword\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">this</span>.form.typeId =<span class=\"hljs-string\" style=\"margin: 0px; padding: 0px; color: rgb(0, 136, 0);\">\"1\"</span>;\r\n            }\r\n        }\r\n    })\r\n</span><span class=\"hljs-tag\" style=\"margin: 0px; padding: 0px; color: rgb(0, 102, 102);\">&lt;/<span class=\"hljs-title\" style=\"margin: 0px; padding: 0px; color: rgb(0, 0, 136);\">script</span>&gt;</span></code><ul class=\"pre-numbering\" style=\"margin-right: 0px; margin-bottom: 0px; margin-left: 0px; padding: 6px 0px 40px; list-style: none; position: absolute; width: 50px; background-color: rgb(238, 238, 238); top: 0px; left: 0px; border-right: 1px solid rgb(221, 221, 221); text-align: right;\"><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">1</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">2</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">3</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">4</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">5</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">6</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">7</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">8</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">9</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">10</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">11</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">12</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">13</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">14</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">15</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">16</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">17</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">18</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">19</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">20</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">21</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">22</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">23</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">24</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">25</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">26</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">27</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">28</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">29</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">30</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">31</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">32</li><li style=\"margin: 0px; padding: 0px 5px; list-style: none; color: rgb(153, 153, 153);\">33</li></ul></pre></div></div></article><div class=\"article_copyright\" style=\"margin: 0px 0px -20px; padding: 0px 20px 30px; border-bottom: 1px solid rgb(228, 235, 244); border-left: 1px solid rgb(228, 235, 244); border-right: 1px solid rgb(228, 235, 244); font-size: 14px; color: rgb(120, 128, 135); clear: both; overflow: hidden; font-family: &quot;PingFang SC&quot;, &quot;Microsoft YaHei&quot;, SimHei, Arial, SimSun;\">轉自http://blog.csdn.net/museions/article/details/77824361</div>', 'article', null, '', null, null, '1', null, '0', '1', 'bootdo', '2017-10-12 10:41:07', '2017-10-12 10:41:07');
INSERT INTO `blog_content` VALUES ('119', 'Java程序員秋招面經大合集(BAT美團網易小米華爲中興等)', null, null, null, '<h1 class=\"title\" style=\"font-size: 34px; margin-top: 20px; margin-bottom: 0px; font-family: -apple-system, &quot;SF UI Display&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-weight: 700; line-height: 1.3; color: rgb(51, 51, 51); word-break: break-word !important;\">Java程序員秋招面經大合集(BAT美團網易小米華爲中興等)</h1><div data-note-content=\"\" class=\"show-content\" style=\"color: rgb(47, 47, 47); font-size: 16px; line-height: 1.7; font-family: -apple-system, &quot;SF UI Text&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; word-break: break-word !important;\"><blockquote style=\"padding-top: 20px; padding-bottom: 20px; margin-bottom: 25px; font-size: 16px; border-left-width: 6px; border-left-color: rgb(180, 180, 180); background-color: rgb(247, 247, 247); line-height: 30px; word-break: break-word !important;\"><ul style=\"padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">Cvte提前批</li><li style=\"line-height: 30px; margin-bottom: 10px;\">阿里內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">便利蜂內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">小米內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">金山wps內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">多益網絡</li><li style=\"line-height: 30px; margin-bottom: 10px;\">拼多多學霸批</li><li style=\"line-height: 30px; margin-bottom: 10px;\">搜狗校招</li><li style=\"line-height: 30px; margin-bottom: 10px;\">塗鴉移動</li><li style=\"line-height: 30px; margin-bottom: 10px;\">中國電信it研發中心</li><li style=\"line-height: 30px; margin-bottom: 10px;\">中興</li><li style=\"line-height: 30px; margin-bottom: 10px;\">華爲</li><li style=\"line-height: 30px; margin-bottom: 10px;\">蘇寧內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">美團內推</li><li style=\"line-height: 30px; margin-bottom: 10px;\">百度</li><li style=\"line-height: 30px; margin-bottom: 10px;\">騰訊</li><li style=\"line-height: 30px; margin-bottom: 10px;\">招商銀行信用卡</li><li style=\"line-height: 30px; margin-bottom: 10px;\">招銀網絡科技</li><li style=\"line-height: 30px; margin-bottom: 10px;\">網易</li><li style=\"line-height: 30px; margin-bottom: 0px;\">Vivo</li></ul></blockquote><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">Cvte提前批</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹你的項目</li><li style=\"line-height: 30px; margin-bottom: 10px;\">加密解密瞭解麼?幾種算法,講一下你瞭解的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">多線程瞭解麼?什麼是線程安全?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">說一個你最熟悉的設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下你項目中用到了哪些設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java的hashmap的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap的線程安全性,什麼是線程安全的?如何實現線程安全</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(視頻)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹項目</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Mysql的數據庫引擎,區別特點</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計模式瞭解?講一下最熟悉的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">寫一個單例模式,答主寫的是雙檢查鎖單例,問了爲什麼用Volatile,synchronize移到方法最外面會怎麼樣?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">單例模式在你項目裏哪些應用?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據連接池</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對高負載有了解麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你意向的技術方向是哪塊?(答主回答的高併發,然後面試官說他是做高負載的)</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對高併發有了解麼?</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">阿里內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">聽說你有博客,博客裏大概有什麼內容?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹,最複雜的表</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap爲什麼大小是2的冪次</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹一下紅黑樹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Arraylist的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">場景題:設計判斷論文抄襲的系統</li><li style=\"line-height: 30px; margin-bottom: 10px;\">堆排序的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">抽象工廠和工廠方法模式的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">工廠模式的思想</li><li style=\"line-height: 30px; margin-bottom: 10px;\">object類你知道的方法</li><li style=\"line-height: 30px; margin-bottom: 10px;\">哪裏用到了工廠模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Forward和redirect的區別</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(視頻)</h2><p style=\"margin-bottom: 25px; word-break: break-word !important;\">1, 自我介紹<br>2, 項目介紹<br>3, 項目架構<br>4, 項目難點<br>5, Synchronize關鍵字爲什麼jdk1.5後效率提高了<br>6, 線程池的使用時的注意事項<br>7, Spring中autowire和resourse關鍵字的區別<br>8, Hashmap的原理<br>9, Hashmap的大小爲什麼指定爲2的冪次<br>10, 講一下線程狀態轉移圖<br>11, 消息隊列了解麼<br>12, 分佈式瞭解麼</p><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">便利蜂內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">volatile和synchronized</li><li style=\"line-height: 30px; margin-bottom: 10px;\">來個算法題:一個無序數組,其中一個數字出現的次數大於其他數字之和,求這個數字 (主元素)</li><li style=\"line-height: 30px; margin-bottom: 10px;\">答完再來一個:一個數組,有正有負,不改變順序的情況下,求和最大的最長子序列</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目用到什麼數據庫?隔離級別?每個隔離級別各做了什麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的索引?mysql不同引擎索引的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">垃圾回收算法的過程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你瞭解的垃圾收集器? Cms收集器的過程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎樣進入老年代?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">平時用到了什麼設計模式?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下你最熟的兩個設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">用過什麼系統?shell寫過腳本嗎?</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">小米內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">看你最近博客寫的是redis,介紹redis和mysql的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的應用場景</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap中jdk1.8之後做了哪些優化</li><li style=\"line-height: 30px; margin-bottom: 10px;\">垃圾回收的過程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Jvm的參數設置</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目中的優化</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">金山wps內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對Java的面向對象的理解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對java多線程的理解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的索引</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的隔離級別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計模式的理解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講幾個設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對算法有什麼瞭解?答主先回答了動態規劃,解釋了一下dp的思想</li><li style=\"line-height: 30px; margin-bottom: 10px;\">快排的思想講一下</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Tcp怎麼保證可靠傳輸(中間穿插了好多小問題)</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Tcp的擁塞控制</li><li style=\"line-height: 30px; margin-bottom: 10px;\">讓你設計一個即時聊天的系統</li><li style=\"line-height: 30px; margin-bottom: 10px;\">支付寶轉賬,是如何實現,幾個小時通知轉賬成功的(面試官想讓回答長連接,答主一直沒get到點)</li><li style=\"line-height: 30px; margin-bottom: 10px;\">解釋一下長連接</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">多益網絡</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(視頻)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對面向對象的理解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹多態</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java新建線程有哪幾種方式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">線程池的作用</li><li style=\"line-height: 30px; margin-bottom: 10px;\">看過框架源碼麼</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">拼多多學霸批</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場面)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:一棵二叉排序樹,給定一個數,找到與給定數差值最小的數</li><li style=\"line-height: 30px; margin-bottom: 10px;\">場景題:設計一個系統,解決搶購時所需要的大量的短鏈接的功能,如何保證高併發,如何設計短鏈接</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(現場面)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">代碼量多少</li><li style=\"line-height: 30px; margin-bottom: 10px;\">給了一張紙,各種名詞,會的寫出來</li><li style=\"line-height: 30px; margin-bottom: 10px;\">然後給它解釋那些會的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計題:設計一個系統,記錄qq用戶前一天的登錄狀態,提供16g內存和2tb的硬盤,要做到查詢指定qq號的前一天的登錄狀態,快速查詢O(1)複雜度</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">搜狗校招</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場):</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:兩個排序的數組A和B分別含有m和n個數,找到兩個排序數組的中位數,答主用的二分,時間複雜度爲O(log (m+n))。結果面試官不滿意,讓用歸併的思想做,時間複雜度其實更高了</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹網絡編程</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">塗鴉移動</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的索引原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">索引使用的注意事項</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的引擎</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java垃圾回收機制</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java的finalize,finally,final三個關鍵字的區別和應用場景</li><li style=\"line-height: 30px; margin-bottom: 10px;\">String類可以被繼承麼<br>手撕算法:假設你是一個專業的竊賊,準備沿着一條街打劫房屋。每個房子都存放着特定金額的錢。你面臨的唯一約束條件是:相鄰的房子裝着相互聯繫的防盜系統,且 當相鄰的兩個房子同一天被打劫時,該系統會自動報警。<br>給定一個非負整數列表,表示每個房子中存放的錢, 算一算,如果今晚去打劫,你最多可以得到多少錢 在不觸動報警裝置的情況下。</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">對遊戲的瞭解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">算法題:給一個整數數組,找到兩個數使得他們的和等於一個給定的數 target。</li><li style=\"line-height: 30px; margin-bottom: 10px;\">紅黑樹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的應用</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">中國電信it研發中心</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目裏用的什麼服務器</li><li style=\"line-height: 30px; margin-bottom: 10px;\">自己寫一個tomcat服務器,你會怎麼寫</li><li style=\"line-height: 30px; margin-bottom: 10px;\">分佈式服務器會出現哪些問題</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼解決session一致性緩存的問題</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的優勢和特點</li><li style=\"line-height: 30px; margin-bottom: 10px;\">一千萬用戶併發搶購,怎麼設計</li><li style=\"line-height: 30px; margin-bottom: 10px;\">如果成功的用戶有10萬,redis存不下怎麼處理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你項目中的難點</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹spring中的熟悉的註解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">讓你實現autowire註解的功能你會如何實現</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis和mysql的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的持久化有哪些方式,具體原理</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">中興</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">專業面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你瞭解的設計模式,講兩個</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java collection類,集合,講兩個你瞭解的,說實現原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java線程池的作用</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你覺得你在你實驗室處於什麼水平</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">綜合面試(現場)</h2><p style=\"margin-bottom: 25px; word-break: break-word !important;\">說好的綜合面試純聊天呢?<br>1. 自我介紹<br>2. 項目介紹<br>3. 說一下你知道的設計模式<br>4. 畫一個策略模式的uml圖<br>5. Java多線程的理解<br>6. 內存屏障是什麼<br>7. 數據庫索引<br>8. 項目中的優化<br>9. 然後開始聊人生<br>10. 你的缺點,你最不喜歡什麼樣的人,你的家庭等等</p><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">華爲</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目架構</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目一個完整的執行流程(由於我是搞java的,而面試官是搞c的,所以全程尬聊)</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目優化</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼管理項目進度</li><li style=\"line-height: 30px; margin-bottom: 10px;\">平常的愛好</li><li style=\"line-height: 30px; margin-bottom: 10px;\">感覺面試官也不是搞java的,所以又是一陣尬聊</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">蘇寧內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">面過哪些公司了</li><li style=\"line-height: 30px; margin-bottom: 10px;\">有哪些offer了</li><li style=\"line-height: 30px; margin-bottom: 10px;\">聊到多益,於是開始聊最近微博上很火的多益老闆</li><li style=\"line-height: 30px; margin-bottom: 10px;\">得出結論,我和面試官都覺得多益老闆三觀有問題,但做遊戲就是要偏執的人</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你博客主要哪方面的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">多線程併發包瞭解麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下countDownLatch</li></ol><p style=\"margin-bottom: 25px; word-break: break-word !important;\">蘇寧聊了20分鐘八卦就面完了,一輪技術面</p><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">美團內推</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(電話)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">瞭解redis源碼麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">瞭解redis集羣麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">hashmap容量爲什麼是2的冪次</li><li style=\"line-height: 30px; margin-bottom: 10px;\">hashset的源碼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">object類你知道的方法</li><li style=\"line-height: 30px; margin-bottom: 10px;\">hashcode和equals</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你重寫過hashcode和equals麼,要注意什麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">假設現在一個學生類,有學號和姓名,我現在hashcode方法重寫的時候,只將學號參與計算,會出現什麼情況?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">往set裏面put一個學生對象,然後將這個學生對象的學號改了,再put進去,可以放進set麼?並講出爲什麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的持久化?有哪些方式,原理是什麼?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下穩定的排序算法和不穩定的排序算法</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下快速排序的思想</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講一下數據的acid</li><li style=\"line-height: 30px; margin-bottom: 10px;\">什麼是一致性</li><li style=\"line-height: 30px; margin-bottom: 10px;\">什麼是隔離性</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Mysql的隔離級別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">每個隔離級別是如何解決</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Mysql要加上nextkey鎖,語句該怎麼寫</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java的內存模型,垃圾回收</li><li style=\"line-height: 30px; margin-bottom: 10px;\">線程池的參數</li><li style=\"line-height: 30px; margin-bottom: 10px;\">每個參數解釋一遍</li><li style=\"line-height: 30px; margin-bottom: 10px;\">然後面試官設置了每個參數,給了是個線程,讓描述出完整的線程池執行的流程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Nio和IO有什麼區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Nio和aio的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Spring的aop怎麼實現</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Spring的aop有哪些實現方式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">動態代理的實現方式和區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Linux瞭解麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼查看系統負載</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Cpu load的參數如果爲4,描述一下現在系統處於什麼情況</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Linux,查找磁盤上最大的文件的命令</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Linux,如何查看系統日誌文件</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:leeetcode原題 22,Generate Parentheses,給定 n 對括號,請寫一個函數以將其生成新的括號組合,並返回所有組合結果。</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">三面(現場)</h2><p style=\"margin-bottom: 25px; word-break: break-word !important;\">三面沒怎麼問技術,問了很多技術管理方面的問題</p><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼管理項目成員</li><li style=\"line-height: 30px; margin-bottom: 10px;\">當意見不一致時,如何溝通並說服開發成員,並舉個例子</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼保證項目的進度</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的索引原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">非聚簇索引和聚簇索引</li><li style=\"line-height: 30px; margin-bottom: 10px;\">索引的使用注意事項</li><li style=\"line-height: 30px; margin-bottom: 10px;\">聯合索引</li><li style=\"line-height: 30px; margin-bottom: 10px;\">從底層解釋最左匹配原則</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Mysql對聯合索引有優化麼?會自動調整順序麼?哪個版本開始優化?</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的應用</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的持久化的方式和原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">技術選型,一個新技術和一個穩定的舊技術,你會怎麼選擇,選擇的考慮有哪些</li><li style=\"line-height: 30px; margin-bottom: 10px;\">說你印象最深的美團點評技術團隊的三篇博客</li><li style=\"line-height: 30px; margin-bottom: 10px;\">最近在學什麼新技術</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你是怎麼去接觸一門新技術的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">會看哪些書</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼選擇要看的書</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">百度</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java中的多態</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Object類下的方法</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Finalize的作用和使用場景</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashcode和equals</li><li style=\"line-height: 30px; margin-bottom: 10px;\">爲什麼要同時重寫hashcode和equals</li><li style=\"line-height: 30px; margin-bottom: 10px;\">不同時重寫會出現哪些問題</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hashmap如何變線程安全,每種方式的優缺點</li><li style=\"line-height: 30px; margin-bottom: 10px;\">垃圾回收機制</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Jvm的參數你知道的說一下</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計模式瞭解的說一下啊</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕一個單例模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">快速排序的思想講一下</li><li style=\"line-height: 30px; margin-bottom: 10px;\">給個數組,模擬快排的過程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手寫快排</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計題,一個圖書館管理系統,數據庫怎麼設計,需求自己定</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis的特點</li><li style=\"line-height: 30px; margin-bottom: 10px;\">分佈式事務瞭解麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">反爬蟲的機制,有哪些方式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:反轉單鏈表</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:實現類似微博子結構的數據結構,輸入一系列父子關係,輸出一個類似微博評論的父子結構圖</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手寫java多線程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手寫java的soeket編程,服務端和客戶端</li><li style=\"line-height: 30px; margin-bottom: 10px;\">進程間的通信方式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法: 爬樓梯,寫出狀態轉移方程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">智力題:時針分針什麼時候重合</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">三面(現場)</h2><p style=\"margin-bottom: 25px; word-break: break-word !important;\">由於三面面試官不懂java,我不熟c加加,所以全程尬聊</p><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:給定一個數字三角形,找到從頂部到底部的最小路徑和。每一步可以移動到下面一行的相鄰數字上。</li><li style=\"line-height: 30px; margin-bottom: 10px;\"></li><li style=\"line-height: 30px; margin-bottom: 10px;\">然後繼續在這個問題上擴展</li><li style=\"line-height: 30px; margin-bottom: 10px;\">求出最短那條的路徑</li><li style=\"line-height: 30px; margin-bottom: 10px;\">遞歸求出所有的路徑</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計模式講一下熟悉的</li><li style=\"line-height: 30px; margin-bottom: 10px;\">會不會濫用設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">多線程條件變量爲什麼要在while體裏</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你遇到什麼挫折</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">騰訊</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hibernate的作用,你的理解</li><li style=\"line-height: 30px; margin-bottom: 10px;\">多線程的理解,如何保證線程安全</li><li style=\"line-height: 30px; margin-bottom: 10px;\">mysql數據庫的引擎和區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">場景題:千萬用戶搶購,如何處理高併發,並且有一個鏈接,指向前一天搶購成功的用戶,如何設計這個系統和數據庫</li><li style=\"line-height: 30px; margin-bottom: 10px;\">如果後臺處理搶購請求的服務器,每次最多承受200的負載,系統該怎麼設計</li><li style=\"line-height: 30px; margin-bottom: 10px;\">手撕算法:最小公倍數和最大公約數</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目裏一個完整請求的流程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目的優化</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hibernate和mybatis的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">爲什麼用ssh框架</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Mysql的容災備份</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Redis和memcache 的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">爲什麼選擇redis</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Java的full gc</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Full gc會導致什麼問題</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">招商銀行信用卡</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">分佈式事務</li><li style=\"line-height: 30px; margin-bottom: 10px;\">設計模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">訪問者模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">裝飾者模式</li><li style=\"line-height: 30px; margin-bottom: 10px;\">有哪些offer</li><li style=\"line-height: 30px; margin-bottom: 10px;\">爲什麼還來我們這</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">招銀網絡科技</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">寫一個兩個有序鏈表合併成一個有序鏈表</li><li style=\"line-height: 30px; margin-bottom: 10px;\">死鎖是什麼呢</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼解決死鎖</li><li style=\"line-height: 30px; margin-bottom: 10px;\">http請求流程</li><li style=\"line-height: 30px; margin-bottom: 10px;\">爲什麼負載均衡</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼實現負載均衡</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫掛了怎麼辦?除了熱備份還有什麼方法</li><li style=\"line-height: 30px; margin-bottom: 10px;\">講講你對spring的理解,不要把ioc和aop背給我聽</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">算法:找出兩個數組相等的數,不能用其他數據結構</li><li style=\"line-height: 30px; margin-bottom: 10px;\">算法:給定一個數字,一個數組,找出數組中相加等於這兩個數的和,不能用數據結構</li><li style=\"line-height: 30px; margin-bottom: 10px;\">算法:如何判斷一個樹是不是另一顆樹的子樹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">如何解決併發訪問的錯誤</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">網易</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面(現場)</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">I++操作怎麼保證線程安全</li><li style=\"line-height: 30px; margin-bottom: 10px;\">場景題:設計一個下單系統,下單成功後可以給用戶發優惠券</li><li style=\"line-height: 30px; margin-bottom: 10px;\">接上面場景題:服務器掛了,優惠券還沒發怎麼辦</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫掛了怎麼怎麼辦</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼保證一致性</li><li style=\"line-height: 30px; margin-bottom: 10px;\">分佈式事務知道麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">介紹分佈式事務</li><li style=\"line-height: 30px; margin-bottom: 10px;\">你的職業規劃</li></ol><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">二面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Nio的原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Channel和buffer</li><li style=\"line-height: 30px; margin-bottom: 10px;\">directBuffer和buffer的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">nio和aio的區別</li><li style=\"line-height: 30px; margin-bottom: 10px;\">鎖的實現原理</li><li style=\"line-height: 30px; margin-bottom: 10px;\">怎麼解決緩存和主存的一致性問題</li><li style=\"line-height: 30px; margin-bottom: 10px;\">緩存還沒更新到主存,服務器掛了怎麼辦</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫掛了怎麼辦</li></ol><h1 style=\"font-size: 26px; margin-top: 0px; margin-bottom: 15px; font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); text-rendering: optimizeLegibility;\">Vivo</h1><h2 style=\"font-family: inherit; font-weight: 700; line-height: 1.7; color: rgb(47, 47, 47); margin: 0px 0px 15px; font-size: 24px; text-rendering: optimizeLegibility;\">一面</h2><ol style=\"margin-bottom: 20px; padding: 0px; margin-left: 22px; word-break: break-word !important;\"><li style=\"line-height: 30px; margin-bottom: 10px;\">自我介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">項目介紹</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Hibernate的batch有數量限制麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Jquery用過麼</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Extjs的優缺點</li><li style=\"line-height: 30px; margin-bottom: 10px;\">有沒有擴展過extjs</li><li style=\"line-height: 30px; margin-bottom: 10px;\">讀寫鎖</li><li style=\"line-height: 30px; margin-bottom: 10px;\">什麼時候用讀鎖</li><li style=\"line-height: 30px; margin-bottom: 10px;\">什麼時候用寫鎖</li><li style=\"line-height: 30px; margin-bottom: 10px;\">Cas的原理,使用場景</li><li style=\"line-height: 30px; margin-bottom: 10px;\">數據庫的瓶頸</li></ol><div><br></div><div><br></div><div>轉自<a href=\"http://www.jianshu.com//p/72712546648b\" target=\"_blank\">http://www.jianshu.com//p/72712546648b</a></div></div>', 'article', null, '', null, null, '1', null, '0', '1', 'Bootdo', '2017-10-13 13:45:20', '2017-10-13 13:45:20');
INSERT INTO `blog_content` VALUES ('121', 'Spring Cloud下微服務權限方案', null, null, null, '<p><br></p><div class=\"Layout-navbarHolder\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; height: 59px; color: rgb(51, 51, 51); font-family: -apple-system, &quot;Helvetica Neue&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: medium;\"><header class=\"Navbar ScrollBackFixed\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; flex-direction: row; -webkit-box-align: center; align-items: center; flex-shrink: 0; contain: layout; -webkit-box-pack: justify; justify-content: space-between; height: 59px; width: 1519.2px; border-bottom: 1px solid rgba(0, 0, 0, 0.08); color: rgb(128, 128, 128); background: rgba(255, 255, 255, 0.97); z-index: 2; position: fixed; border-top-color: rgba(0, 0, 0, 0.08); border-right-color: rgba(0, 0, 0, 0.08); border-left-color: rgba(0, 0, 0, 0.08); transform: translateY(-100%); will-change: transform;\"><div class=\"Navbar-functionality\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; flex-direction: row; -webkit-box-align: center; align-items: center; flex-shrink: 0; position: absolute; right: 0px; top: 0px; height: 58px; align-self: stretch;\"><a class=\"Navbar-write\" style=\"box-sizing: inherit; color: inherit; display: flex; -webkit-box-align: center; align-items: center; padding: 0px 10px; white-space: nowrap; transition: color 0.2s;\"><span class=\"icon icon-ic_nav_new\" style=\"box-sizing: inherit; font-size: 24px; speak: none; font-feature-settings: normal; line-height: 1; -webkit-font-smoothing: antialiased; margin-right: 3px; font-family: icomoon !important;\"></span>寫文章</a><button class=\"Button Navbar-loginButon Button--blue\" type=\"button\" style=\"box-sizing: inherit; padding: 0px 16px; color: rgb(0, 128, 255); font-size: 14px; line-height: 30px; background-image: none; background-position: initial; background-size: initial; background-repeat: initial; background-attachment: initial; background-origin: initial; background-clip: initial; border-width: 1px; border-style: solid; border-color: rgb(0, 128, 255); -webkit-appearance: none; border-radius: 4px; height: 32px; margin-right: 16px; margin-left: 6px; width: 72px;\">登錄</button></div></header></div><div style=\"box-sizing: inherit; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; color: rgb(51, 51, 51); font-family: -apple-system, &quot;Helvetica Neue&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: medium;\"></div><div class=\"Layout-main av-card av-paddingBottom av-bodyFont Layout-titleImage--normal\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; margin: 22px auto 0px; padding: 0px; width: 660px; z-index: 1; color: rgb(51, 51, 51); font-family: -apple-system, &quot;Helvetica Neue&quot;, Arial, &quot;PingFang SC&quot;, &quot;Hiragino Sans GB&quot;, &quot;Microsoft YaHei&quot;, &quot;WenQuanYi Micro Hei&quot;, sans-serif; font-size: medium;\"><div class=\"PostIndex-header av-paddingTop av-card\" data-zop=\"{&quot;authorName&quot;:&quot;老A&quot;,&quot;itemId&quot;:&quot;29345083&quot;,&quot;title&quot;:&quot;Spring Cloud下微服務權限方案&quot;,&quot;type&quot;:&quot;article&quot;}\" data-za-module=\"PostItem\" data-za-module-info=\"{&quot;card&quot;:{&quot;content&quot;:{&quot;type&quot;:&quot;Post&quot;,&quot;token&quot;:&quot;29345083&quot;}}}\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; position: relative;\"><div class=\"TitleImage\" style=\"box-sizing: inherit; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; margin-bottom: 22px;\"><img alt=\"Spring Cloud下微服務權限方案\" src=\"https://pic4.zhimg.com/v2-32e374b99a4332ca8bd52fca9d090617_r.png\" class=\"TitleImage-imagePure TitleImage-imagePure--fixed\" height=\"396px\" style=\"box-sizing: inherit; overflow: hidden; width: 660px; display: block;\"></div><h1 class=\"PostIndex-title av-paddingSide av-titleFont\" style=\"box-sizing: inherit; margin-top: 0px; margin-bottom: 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; font-size: 32px; line-height: 1.3;\">Spring Cloud下微服務權限方案</h1><div class=\"PostIndex-author\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: horizontal; -webkit-box-direction: normal; flex-direction: row; -webkit-box-align: center; align-items: center; flex-shrink: 0; position: relative; font-size: 14px; color: rgb(128, 128, 128); margin-top: 22px;\"><a href=\"https://www.zhihu.com/people/lao-a-68-38\" target=\"_blank\" style=\"box-sizing: inherit; color: inherit;\"><img class=\"Avatar-hemingway PostIndex-authorAvatar Avatar--xs\" alt=\"老A\" src=\"https://pic1.zhimg.com/v2-3b6c82a0652b73ee56207a2f45955ca8_xs.jpg\" srcset=\"https://pic1.zhimg.com/v2-3b6c82a0652b73ee56207a2f45955ca8_l.jpg 2x\" style=\"box-sizing: inherit; overflow: hidden; width: 36px; height: 36px; border-radius: 50%; margin-right: 12px;\"></a><a href=\"https://www.zhihu.com/people/lao-a-68-38\" target=\"_blank\" class=\"PostIndex-authorName\" style=\"box-sizing: inherit; color: rgb(128, 128, 128); min-width: 0px; text-overflow: ellipsis; white-space: nowrap; overflow: hidden;\">老A</a><span class=\"Bull\" style=\"box-sizing: inherit; margin: 0px 6px;\"></span><div class=\"HoverTitle\" data-hover-title=\"2017 年 9月 14 日星期四晚上 7 點 12 分\" style=\"box-sizing: inherit; display: flex; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; position: relative;\"><time datetime=\"Thu Sep 14 2017 19:12:26 GMT+0800 (中國標準時間)\" style=\"box-sizing: inherit;\">1 個月前</time></div></div></div><div class=\"RichText PostIndex-content av-paddingSide av-card\" style=\"box-sizing: inherit; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0; word-break: break-word; margin: 30px 0px; line-height: 1.7;\"><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">背景</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">從傳統的單體應用轉型Spring Cloud的朋友都在問我,Spring Cloud下的微服務權限怎麼管?怎麼設計比較合理?從大層面講叫服務權限,往小處拆分,分別爲三塊:用戶認證、用戶權限、服務校驗。</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">用戶認證</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">傳統的單體應用可能習慣了session的存在,而到了Spring cloud的微服務化後,session雖然可以採取分佈式會話來解決,但終究不是上上策。開始有人推行Spring Cloud Security結合很好的OAuth2,後面爲了優化OAuth 2中Access Token的存儲問題,提高後端服務的可用性和擴展性,有了更好Token驗證方式JWT(JSON Web Token)。這裏要強調一點的是,OAuth2和JWT這兩個根本沒有可比性,是兩個完全不同的東西。 OAuth2是一種授權框架,而JWT是一種認證協議</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">OAuth2認證框架</h2><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">OAuth2中包含四個角色:</h2><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">資源擁有者(Resource Owner)</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">資源服務器(Resource Server)</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">授權服務器(Authorization Server)</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">客戶端(Client)</li></ul><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">OAuth2包含4種授權模式</h2><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">授權碼(認證碼)模式 (Authorization code)</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">簡化(隱形)模式 (Impilict</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">用戶名密碼模式 (Resource Owner Password Credential)</li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">客戶端模式 (Client Credential)</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">其中,OAuth2的運行流程如下圖,摘自RFC 6749:</p><div class=\"highlight\" style=\"box-sizing: inherit; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0;\"><pre style=\"box-sizing: inherit; margin-top: 1em; margin-bottom: 1em; padding: 10px; font-family: Menlo, Monaco, Consolas, &quot;Andale Mono&quot;, &quot;lucida console&quot;, &quot;Courier New&quot;, monospace; font-size: 14px; word-wrap: normal; background: rgb(235, 238, 245);\"><code class=\"language-text\" style=\"box-sizing: inherit; font-family: Menlo, Monaco, Consolas, &quot;Andale Mono&quot;, &quot;lucida console&quot;, &quot;Courier New&quot;, monospace;\"><span style=\"box-sizing: inherit;\"></span>+--------+                               +---------------+\r\n|        |--(A)- Authorization Request -&gt;|   Resource    |\r\n|        |                               |     Owner     |\r\n|        |&lt;-(B)-- Authorization Grant ---|               |\r\n|        |                               +---------------+\r\n|        |\r\n|        |                               +---------------+\r\n|        |--(C)-- Authorization Grant --&gt;| Authorization |\r\n| Client |                               |     Server    |\r\n|        |&lt;-(D)----- Access Token -------|               |\r\n|        |                               +---------------+\r\n|        |\r\n|        |                               +---------------+\r\n|        |--(E)----- Access Token ------&gt;|    Resource   |\r\n|        |                               |     Server    |\r\n|        |&lt;-(F)--- Protected Resource ---|               |\r\n+--------+                               +---------------+\r\n</code></pre></div><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">我們在Spring Cloud OAuth2中,所有訪問微服務資源的請求都在Http Header中攜帶Token,被訪問的服務接下來再去請求授權服務器驗證Token的有效性,目前這種方式,我們需要兩次或者更多次的請求,所有的Token有效性校驗都落在的授權服務器上,對於我們系統的水平擴展成爲一個非常大的瓶頸。</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">JWT認證協議</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">授權服務器將用戶信息和授權範圍序列化後放入一個JSON字符串,然後使用Base64進行編碼,最終在授權服務器用私鑰對這個字符串進行簽名,得到一個JSON Web Token。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">假設其他所有的資源服務器都將持有一個RSA公鑰,當資源服務器接收到這個在Http Header中存有Token的請求,資源服務器就可以拿到這個Token,並驗證它是否使用正確的私鑰簽名(是否經過授權服務器簽名,也就是驗籤)。驗籤通過,反序列化後就拿到Toekn中包含的有效驗證信息。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">其中,主體運作流程圖如下:</p><div class=\"highlight\" style=\"box-sizing: inherit; -webkit-box-orient: vertical; -webkit-box-direction: normal; flex-direction: column; -webkit-box-align: stretch; align-items: stretch; flex-shrink: 0;\"><pre style=\"box-sizing: inherit; margin-top: 1em; margin-bottom: 1em; padding: 10px; font-family: Menlo, Monaco, Consolas, &quot;Andale Mono&quot;, &quot;lucida console&quot;, &quot;Courier New&quot;, monospace; font-size: 14px; word-wrap: normal; background: rgb(235, 238, 245);\"><code class=\"language-text\" style=\"box-sizing: inherit; font-family: Menlo, Monaco, Consolas, &quot;Andale Mono&quot;, &quot;lucida console&quot;, &quot;Courier New&quot;, monospace;\"><span style=\"box-sizing: inherit;\"></span>+-----------+                                     +-------------+\r\n|           |       1-Request Authorization       |             |\r\n|           |------------------------------------&gt;|             |\r\n|           |     grant_type&amp;username&amp;password    |             |--+\r\n|           |                                     |Authorization|  | 2-Gen\r\n|           |                                     |Service      |  |   JWT\r\n|           |       3-Response Authorization      |             |&lt;-+\r\n|           |&lt;------------------------------------| Private Key |\r\n|           |    access_token / refresh_token     |             |\r\n|           |    token_type / expire_in           |             |\r\n|  Client   |                                     +-------------+\r\n|           |                                 \r\n|           |                                     +-------------+\r\n|           |       4-Request Resource            |             |\r\n|           |-----------------------------------&gt; |             |\r\n|           | Authorization: bearer Access Token  |             |--+\r\n|           |                                     | Resource    |  | 5-Verify\r\n|           |                                     | Service     |  |  Token\r\n|           |       6-Response Resource           |             |&lt;-+\r\n|           |&lt;----------------------------------- | Public Key  |\r\n+-----------+                                     +-------------+\r\n</code></pre></div><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">通過上述的方式,我們可以很好地完成服務化後的用戶認證。</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">用戶權限</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">傳統的單體應用的權限攔截,大家都喜歡shiro,而且用的頗爲順手。可是一旦拆分後,這權限開始分散在各個API了,shiro還好使嗎?筆者在項目中,並沒有用shiro。前後端分離後,交互都是token,後端的服務無狀態化,前端按鈕資源化,權限放哪兒管好使?</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">抽象與設計</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">在介紹靈活的核心設計前,先給大家普及一個入門的概念:RBAC(Role-Based Access Control,基於角色的訪問控制),就是用戶通過角色與權限進行關聯。簡單地說,一個用戶擁有若干角色,每一個角色擁有若干權限。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">RBAC其實是一種分析模型,主要分爲:基本模型RBAC0(Core RBAC)、角色分層模型RBAC1(Hierarchal RBAC)、角色限制模型RBAC2(Constraint RBAC)和統一模型RBAC3(Combines RBAC)。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">更多詳情大家可以瞭解:<a href=\"http://link.zhihu.com/?target=http%3A//blog.csdn.net/zwk626542417/article/details/46726491\" class=\" wrap external\" target=\"_blank\" rel=\"nofollow noreferrer\" style=\"box-sizing: inherit; color: rgb(34, 85, 153); border-bottom: 1px solid rgba(64, 64, 64, 0.72); word-break: break-all;\">RBAC權限模型<span class=\"icon-external\" style=\"box-sizing: inherit; font-size: 24px; speak: none; font-feature-settings: normal; line-height: 1; -webkit-font-smoothing: antialiased; font-family: icomoon !important;\"></span></a></p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">核心UML</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><img src=\"https://pic2.zhimg.com/v2-3e3eed438a7df522714407c5436c9bc9_b.png\" data-rawwidth=\"1168\" data-rawheight=\"532\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"1168\" data-original=\"https://pic2.zhimg.com/v2-3e3eed438a7df522714407c5436c9bc9_r.png\" data-actualsrc=\"https://pic2.zhimg.com/v2-3e3eed438a7df522714407c5436c9bc9_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">這是筆者通過多種業務場景後抽象的RBAC關係圖</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">類說明</h2><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">Group</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">羣或組,擁有一定數量權限的集合,亦可以是權限的載體。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">子類:User(用戶)、Role(角色)、Position(崗位)、Unit(部門),通過用戶的特定構成,形成不同業務場景的羣或組,而通過對羣或組的父類授權,完成了用戶的權限獲取。</p><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">Permission</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">權限,擁有一定數量資源的集成,亦可以是資源的載體。</p><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">Resources</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">權限下有資源,資源的來源有:Menu(菜單)、Button(動作權限)、頁面元素(按鈕、tab等)、數據權限等</p><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">Program</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">程序,相關權限控制的呈現載體,可以在多個菜單中掛載。</p><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">常見web程序基本構成</li></ul><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><img src=\"https://pic1.zhimg.com/v2-9f156709621fdd7685db9781829e2948_b.png\" data-rawwidth=\"873\" data-rawheight=\"492\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"873\" data-original=\"https://pic1.zhimg.com/v2-9f156709621fdd7685db9781829e2948_r.png\" data-actualsrc=\"https://pic1.zhimg.com/v2-9f156709621fdd7685db9781829e2948_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">模型與微服務的關係</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">如果把Spring Cloud服務化後的所有api接口都定義爲上文的Resources,那麼我們可以看到這麼一個情況。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">比如一個用戶的增刪改查,我們的頁面會這麼做</p><img src=\"https://pic1.zhimg.com/v2-ac1fa4fc0005af11c0a7aa59fe62cbbc_b.png\" data-rawwidth=\"2880\" data-rawheight=\"1460\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"2880\" data-original=\"https://pic1.zhimg.com/v2-ac1fa4fc0005af11c0a7aa59fe62cbbc_r.png\" data-actualsrc=\"https://pic1.zhimg.com/v2-ac1fa4fc0005af11c0a7aa59fe62cbbc_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">頁面元素資源編碼資源URI資源請求方式查詢user_btn_get/api/user/{id}GET增加user_btn_add/api/userPOST編輯user_btn_edit/api/user/{id}PUT刪除user_btn_del/api/user/{id}DELETE</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">在抽象成上述的映射關係後,我們的前後端的資源有了參照,我們對於用戶組的權限授權就容易了。比如我授予一個用戶增加、刪除權限。在前端我們只需要檢驗該資源編碼的有無就可以控制按鈕的顯示和隱藏,而在後端我們只需要統一攔截判斷該用戶是否具有URI和對應請求方式即可。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">至於權限的統一攔截是放置在Zuul這個網關上,還是落在具體的後端服務的攔截器上(Filter、Inteceptor),都可以輕而易舉地實現。不在侷限於代碼的侵入性。放置Zuul流程圖如下:</p><img src=\"https://pic3.zhimg.com/v2-efbe4a2af48e48c86867a49f04759b7a_b.png\" data-rawwidth=\"1426\" data-rawheight=\"710\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"1426\" data-original=\"https://pic3.zhimg.com/v2-efbe4a2af48e48c86867a49f04759b7a_r.png\" data-actualsrc=\"https://pic3.zhimg.com/v2-efbe4a2af48e48c86867a49f04759b7a_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">要是權限的統一攔截放置在Zuul上,會有一個問題,那就是後端服務安不安全,服務只需要通過註冊中心,即可對其他服務進行調用。這裏就涉及到後面的第三個模塊,服務之間的鑑權。</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">服務之間的鑑權</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">因爲我們都知道服務之間開源通過註冊中心尋到客戶端後,直接遠程過程調用的。對於生產上的各個服務,一個個敏感性的接口,我們更是需要加以保護。主題的流程如下圖:</p><img src=\"https://pic4.zhimg.com/v2-2c574cb730d4e02834e238d0f7fc40eb_b.png\" data-rawwidth=\"1700\" data-rawheight=\"926\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"1700\" data-original=\"https://pic4.zhimg.com/v2-2c574cb730d4e02834e238d0f7fc40eb_r.png\" data-actualsrc=\"https://pic4.zhimg.com/v2-2c574cb730d4e02834e238d0f7fc40eb_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">筆者的實現方式是基於Spring Cloud的FeignClient Inteceprot(自動申請服務token、傳遞當前上下文)和Mvc Inteceptor(服務token校驗、更新當前上下文)來實現,從而對服務的安全性做進一步保護。</p><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">結合Spring Cloud的特性後,整體流程圖如下:</p><img src=\"https://pic1.zhimg.com/v2-467d442498d0ed41372a7567fc36a714_b.png\" data-rawwidth=\"2182\" data-rawheight=\"1638\" class=\"origin_image zh-lightbox-thumb lazy\" width=\"2182\" data-original=\"https://pic1.zhimg.com/v2-467d442498d0ed41372a7567fc36a714_r.png\" data-actualsrc=\"https://pic1.zhimg.com/v2-467d442498d0ed41372a7567fc36a714_b.png\" style=\"box-sizing: inherit; overflow: hidden; display: block; max-width: 100%; margin: 24px auto; cursor: -webkit-zoom-in;\"><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\"><br style=\"box-sizing: inherit;\"></p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">優化點</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">雖然通過上述的用戶合法性檢驗、用戶權限攔截以及服務之間的鑑權,保證了Api接口的安全性,但是其間的Http訪問頻率是比較高的,請求數量上來的時候,慢的問題是就會特別明顯。可以考慮一定的優化策略,比如用戶權限緩存、服務授權信息的派發與混存、定時刷新服務鑑權Token等。</p><h2 style=\"box-sizing: inherit; margin: 20px 0px; font-style: inherit; font-variant: inherit; font-weight: 700; font-stretch: inherit; line-height: inherit;\">結語</h2><p style=\"box-sizing: inherit; margin-top: 20px; margin-bottom: 20px;\">上述是筆者在項目裏的大體思路,有興趣的朋友可以借鑑我的開源項目,歡迎star:</p><ul style=\"box-sizing: inherit; margin: 20px 0px; padding: 0px 0px 0px 40px;\"><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">gitchina:<a href=\"http://link.zhihu.com/?target=http%3A//git.oschina.net/geek_qi/ace-security%25EF%25BC%2588Jwt%25E3%2580%2581%25E7%2594%25A8%25E6%2588%25B7%25E6%259D%2583%25E9%2599%2590%25EF%25BC%2589\" class=\" wrap external\" target=\"_blank\" rel=\"nofollow noreferrer\" style=\"box-sizing: inherit; color: rgb(34, 85, 153); border-bottom: 1px solid rgba(64, 64, 64, 0.72); word-break: break-all;\">http://git.oschina.net/geek_qi/ace-security(Jwt、用戶權限)<span class=\"icon-external\" style=\"box-sizing: inherit; font-size: 24px; speak: none; font-feature-settings: normal; line-height: 1; -webkit-font-smoothing: antialiased; font-family: icomoon !important;\"></span></a></li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">github:<a href=\"http://link.zhihu.com/?target=https%3A//github.com/wxiaoqi/ace-security\" class=\" external\" target=\"_blank\" rel=\"nofollow noreferrer\" style=\"box-sizing: inherit; color: rgb(34, 85, 153); border-bottom: 1px solid rgba(64, 64, 64, 0.72); word-break: break-all;\"><span class=\"invisible\" style=\"box-sizing: inherit; font-stretch: normal; font-size: 0px; line-height: 0; font-family: a; color: transparent; text-shadow: none; background-color: transparent;\">https://</span><span class=\"visible\" style=\"box-sizing: inherit;\">github.com/wxiaoqi/ace-</span><span class=\"invisible\" style=\"box-sizing: inherit; font-stretch: normal; font-size: 0px; line-height: 0; font-family: a; color: transparent; text-shadow: none; background-color: transparent;\">security</span><span class=\"ellipsis\" style=\"box-sizing: inherit;\"></span><span class=\"icon-external\" style=\"box-sizing: inherit; font-size: 24px; speak: none; font-feature-settings: normal; line-height: 1; -webkit-font-smoothing: antialiased; font-family: icomoon !important;\"></span></a></li><li style=\"box-sizing: inherit; list-style-type: initial; margin-top: 10px; list-style-position: outside;\">gitchina:<a href=\"http://link.zhihu.com/?target=http%3A//git.oschina.net/geek_qi/ace-gate%25EF%25BC%2588%25E6%259C%258D%25E5%258A%25A1%25E9%2589%25B4%25E6%259D%2583%25EF%25BC%2589\" class=\" wrap external\" target=\"_blank\" rel=\"nofollow noreferrer\" style=\"box-sizing: inherit; color: rgb(34, 85, 153); border-bottom: 1px solid rgba(64, 64, 64, 0.72); word-break: break-all;\">http://git.oschina.net/geek_qi/ace-gate(服務鑑權)</a></li></ul></div></div>', 'article', null, '', null, null, '1', null, '0', '1', 'bootdo', '2017-10-25 12:28:19', '2017-10-25 12:28:19');

-- ----------------------------
-- Table structure for `oa_notify`
-- ----------------------------
DROP TABLE IF EXISTS `oa_notify`;
CREATE TABLE `oa_notify` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '編號',
  `type` char(1) COLLATE utf8_bin DEFAULT NULL COMMENT '類型',
  `title` varchar(200) COLLATE utf8_bin DEFAULT NULL COMMENT '標題',
  `content` varchar(2000) COLLATE utf8_bin DEFAULT NULL COMMENT '內容',
  `files` varchar(2000) COLLATE utf8_bin DEFAULT NULL COMMENT '附件',
  `status` char(1) COLLATE utf8_bin DEFAULT NULL COMMENT '狀態',
  `create_by` bigint(20) DEFAULT NULL COMMENT '創建者',
  `create_date` datetime DEFAULT NULL COMMENT '創建時間',
  `update_by` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '更新時間',
  `remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '備註信息',
  `del_flag` char(1) COLLATE utf8_bin DEFAULT '0' COMMENT '刪除標記',
  PRIMARY KEY (`id`),
  KEY `oa_notify_del_flag` (`del_flag`)
) ENGINE=InnoDB AUTO_INCREMENT=47 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='通知通告';

-- ----------------------------
-- Records of oa_notify
-- ----------------------------
INSERT INTO `oa_notify` VALUES ('41', '3', '十九大召開了', '十九大召開了,竟然沒邀請我', '', '1', '1', null, null, '2017-10-10 17:21:11', '', null);
INSERT INTO `oa_notify` VALUES ('42', '3', '蘋果發佈新手機了', '有全面屏的iphoneX', '', '1', '1', null, null, '2017-10-10 18:51:14', '', null);
INSERT INTO `oa_notify` VALUES ('43', '3', '十九大要消滅貧困人口', '我還只有兩三年的活頭了', '', '1', '1', null, null, '2017-10-11 09:56:35', '', null);
INSERT INTO `oa_notify` VALUES ('44', '3', '騎士又輸了', '捉急', '', '1', '1', null, null, '2017-10-26 13:59:34', '', null);
INSERT INTO `oa_notify` VALUES ('45', '3', '火箭5連敗', '沒有保羅不行呀', '', '1', '1', null, null, '2017-12-30 12:10:20', '', null);

-- ----------------------------
-- Table structure for `oa_notify_record`
-- ----------------------------
DROP TABLE IF EXISTS `oa_notify_record`;
CREATE TABLE `oa_notify_record` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT COMMENT '編號',
  `notify_id` bigint(20) DEFAULT NULL COMMENT '通知通告ID',
  `user_id` bigint(20) DEFAULT NULL COMMENT '接受人',
  `is_read` tinyint(1) DEFAULT '0' COMMENT '閱讀標記',
  `read_date` date DEFAULT NULL COMMENT '閱讀時間',
  PRIMARY KEY (`id`),
  KEY `oa_notify_record_notify_id` (`notify_id`),
  KEY `oa_notify_record_user_id` (`user_id`),
  KEY `oa_notify_record_read_flag` (`is_read`)
) ENGINE=InnoDB AUTO_INCREMENT=29 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='通知通告發送記錄';

-- ----------------------------
-- Records of oa_notify_record
-- ----------------------------
INSERT INTO `oa_notify_record` VALUES ('18', '41', '1', '1', '2017-10-26');
INSERT INTO `oa_notify_record` VALUES ('19', '42', '1', '1', '2017-10-26');
INSERT INTO `oa_notify_record` VALUES ('20', '43', '136', '0', null);
INSERT INTO `oa_notify_record` VALUES ('21', '43', '133', '0', null);
INSERT INTO `oa_notify_record` VALUES ('22', '43', '130', '0', null);
INSERT INTO `oa_notify_record` VALUES ('23', '43', '1', '1', '2017-10-26');
INSERT INTO `oa_notify_record` VALUES ('24', '44', '1', '1', '2017-12-29');
INSERT INTO `oa_notify_record` VALUES ('25', '45', '1', '1', '2018-01-02');
INSERT INTO `oa_notify_record` VALUES ('26', '45', '135', '0', null);

-- ----------------------------
-- Table structure for `salary`
-- ----------------------------
DROP TABLE IF EXISTS `salary`;
CREATE TABLE `salary` (
  `id` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '編號',
  `PROC_INS_ID` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '流程實例ID',
  `USER_ID` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '變動用戶',
  `OFFICE_ID` varchar(64) COLLATE utf8_bin DEFAULT NULL COMMENT '歸屬部門',
  `POST` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '崗位',
  `AGE` char(1) COLLATE utf8_bin DEFAULT NULL COMMENT '性別',
  `EDU` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '學歷',
  `CONTENT` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '調整原因',
  `OLDA` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '現行標準 薪酬檔級',
  `OLDB` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '現行標準 月工資額',
  `OLDC` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '現行標準 年薪總額',
  `NEWA` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '調整後標準 薪酬檔級',
  `NEWB` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '調整後標準 月工資額',
  `NEWC` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '調整後標準 年薪總額',
  `ADD_NUM` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '月增資',
  `EXE_DATE` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '執行時間',
  `HR_TEXT` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '人力資源部門意見',
  `LEAD_TEXT` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '分管領導意見',
  `MAIN_LEAD_TEXT` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '集團主要領導意見',
  `create_by` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '創建者',
  `create_date` datetime NOT NULL COMMENT '創建時間',
  `update_by` varchar(64) COLLATE utf8_bin NOT NULL COMMENT '更新者',
  `update_date` datetime NOT NULL COMMENT '更新時間',
  `remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '備註信息',
  `del_flag` char(1) COLLATE utf8_bin NOT NULL DEFAULT '0' COMMENT '刪除標記',
  PRIMARY KEY (`id`),
  KEY `OA_TEST_AUDIT_del_flag` (`del_flag`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='審批流程測試表';

-- ----------------------------
-- Records of salary
-- ----------------------------
INSERT INTO `salary` VALUES ('825693cd6c1c4f6b86699fc3f1a54887', '', '136', '', '', '', '', '技能提高', '', '', '', '', '100', '', '', '', '同意', '同意', '總經理審批', '1', '2017-12-15 22:01:41', '1', '2017-12-15 22:01:41', null, '1');
INSERT INTO `salary` VALUES ('a80e1d9ef35a4502bd65b0e5ba7eafff', '', 'cccc', 'ccc', 'ccccc', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '2017-11-30 16:35:15', '', '2017-11-30 16:35:15', '', '');
INSERT INTO `salary` VALUES ('b5d228f729f74833883917825749f0d5', '', '', '', '', '', '', '', '', '', '', '', '', '防守打法', '', '', '', '', '', '', '2017-11-30 19:58:36', '', '2017-11-30 19:58:36', '', '');
INSERT INTO `salary` VALUES ('cc2e8083f9d8478f831b2ea852e5c17b', '', '', 'cc', 'cc', '', '', 'xxx', '', '', '', '', '', '', '', '', '', '', '', '', '2017-11-30 19:18:59', '', '2017-11-30 19:18:59', '', '');
INSERT INTO `salary` VALUES ('cebdb316794b48be87d93dd4dbfb7d4b', '', '', '', '發的順豐', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '', '2017-11-30 19:58:43', '', '2017-11-30 19:58:43', '', '');

-- ----------------------------
-- Table structure for `sys_dept`
-- ----------------------------
DROP TABLE IF EXISTS `sys_dept`;
CREATE TABLE `sys_dept` (
  `dept_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `parent_id` bigint(20) DEFAULT NULL COMMENT '上級部門ID,一級部門爲0',
  `name` varchar(50) DEFAULT NULL COMMENT '部門名稱',
  `order_num` int(11) DEFAULT NULL COMMENT '排序',
  `del_flag` tinyint(4) DEFAULT '0' COMMENT '是否刪除  -1:已刪除  0:正常',
  PRIMARY KEY (`dept_id`)
) ENGINE=InnoDB AUTO_INCREMENT=16 DEFAULT CHARSET=utf8 COMMENT='部門管理';

-- ----------------------------
-- Records of sys_dept
-- ----------------------------
INSERT INTO `sys_dept` VALUES ('6', '0', '研發部', '1', '1');
INSERT INTO `sys_dept` VALUES ('7', '6', '研發一部', '1', '1');
INSERT INTO `sys_dept` VALUES ('8', '6', '研發二部', '2', '1');
INSERT INTO `sys_dept` VALUES ('9', '0', '銷售部', '2', '1');
INSERT INTO `sys_dept` VALUES ('10', '9', '銷售一部', '1', '1');
INSERT INTO `sys_dept` VALUES ('11', '0', '產品部', '3', '1');
INSERT INTO `sys_dept` VALUES ('12', '11', '產品一部', '1', '1');
INSERT INTO `sys_dept` VALUES ('13', '0', '測試部', '5', '1');
INSERT INTO `sys_dept` VALUES ('14', '13', '測試一部', '1', '1');
INSERT INTO `sys_dept` VALUES ('15', '13', '測試二部', '2', '1');

-- ----------------------------
-- Table structure for `sys_dict`
-- ----------------------------
DROP TABLE IF EXISTS `sys_dict`;
CREATE TABLE `sys_dict` (
  `id` bigint(64) NOT NULL AUTO_INCREMENT COMMENT '編號',
  `name` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '標籤名',
  `value` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '數據值',
  `type` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '類型',
  `description` varchar(100) COLLATE utf8_bin DEFAULT NULL COMMENT '描述',
  `sort` decimal(10,0) DEFAULT NULL COMMENT '排序(升序)',
  `parent_id` bigint(64) DEFAULT '0' COMMENT '父級編號',
  `create_by` int(64) DEFAULT NULL COMMENT '創建者',
  `create_date` datetime DEFAULT NULL COMMENT '創建時間',
  `update_by` bigint(64) DEFAULT NULL COMMENT '更新者',
  `update_date` datetime DEFAULT NULL COMMENT '更新時間',
  `remarks` varchar(255) COLLATE utf8_bin DEFAULT NULL COMMENT '備註信息',
  `del_flag` char(1) COLLATE utf8_bin DEFAULT '0' COMMENT '刪除標記',
  PRIMARY KEY (`id`),
  KEY `sys_dict_value` (`value`),
  KEY `sys_dict_label` (`name`),
  KEY `sys_dict_del_flag` (`del_flag`)
) ENGINE=InnoDB AUTO_INCREMENT=123 DEFAULT CHARSET=utf8 COLLATE=utf8_bin COMMENT='字典表';

-- ----------------------------
-- Records of sys_dict
-- ----------------------------
INSERT INTO `sys_dict` VALUES ('1', '正常', '0', 'del_flag', '刪除標記', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('3', '顯示', '1', 'show_hide', '顯示/隱藏', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('4', '隱藏', '0', 'show_hide', '顯示/隱藏', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('5', '是', '1', 'yes_no', '是/否', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('6', '否', '0', 'yes_no', '是/否', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('7', '紅色', 'red', 'color', '顏色值', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('8', '綠色', 'green', 'color', '顏色值', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('9', '藍色', 'blue', 'color', '顏色值', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('10', '黃色', 'yellow', 'color', '顏色值', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('11', '橙色', 'orange', 'color', '顏色值', '50', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('12', '默認主題', 'default', 'theme', '主題方案', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('13', '天藍主題', 'cerulean', 'theme', '主題方案', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('14', '橙色主題', 'readable', 'theme', '主題方案', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('15', '紅色主題', 'united', 'theme', '主題方案', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('16', 'Flat主題', 'flat', 'theme', '主題方案', '60', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('17', '國家', '1', 'sys_area_type', '區域類型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('18', '省份、直轄市', '2', 'sys_area_type', '區域類型', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('19', '地市', '3', 'sys_area_type', '區域類型', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('20', '區縣', '4', 'sys_area_type', '區域類型', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('21', '公司', '1', 'sys_office_type', '機構類型', '60', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('22', '部門', '2', 'sys_office_type', '機構類型', '70', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('23', '小組', '3', 'sys_office_type', '機構類型', '80', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('24', '其它', '4', 'sys_office_type', '機構類型', '90', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('25', '綜合部', '1', 'sys_office_common', '快捷通用部門', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('26', '開發部', '2', 'sys_office_common', '快捷通用部門', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('27', '人力部', '3', 'sys_office_common', '快捷通用部門', '50', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('28', '一級', '1', 'sys_office_grade', '機構等級', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('29', '二級', '2', 'sys_office_grade', '機構等級', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('30', '三級', '3', 'sys_office_grade', '機構等級', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('31', '四級', '4', 'sys_office_grade', '機構等級', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('32', '所有數據', '1', 'sys_data_scope', '數據範圍', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('33', '所在公司及以下數據', '2', 'sys_data_scope', '數據範圍', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('34', '所在公司數據', '3', 'sys_data_scope', '數據範圍', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('35', '所在部門及以下數據', '4', 'sys_data_scope', '數據範圍', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('36', '所在部門數據', '5', 'sys_data_scope', '數據範圍', '50', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('37', '僅本人數據', '8', 'sys_data_scope', '數據範圍', '90', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('38', '按明細設置', '9', 'sys_data_scope', '數據範圍', '100', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('39', '系統管理', '1', 'sys_user_type', '用戶類型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('40', '部門經理', '2', 'sys_user_type', '用戶類型', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('41', '普通用戶', '3', 'sys_user_type', '用戶類型', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('42', '基礎主題', 'basic', 'cms_theme', '站點主題', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('43', '藍色主題', 'blue', 'cms_theme', '站點主題', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('44', '紅色主題', 'red', 'cms_theme', '站點主題', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('45', '文章模型', 'article', 'cms_module', '欄目模型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('46', '圖片模型', 'picture', 'cms_module', '欄目模型', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('47', '下載模型', 'download', 'cms_module', '欄目模型', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('48', '鏈接模型', 'link', 'cms_module', '欄目模型', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('49', '專題模型', 'special', 'cms_module', '欄目模型', '50', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('50', '默認展現方式', '0', 'cms_show_modes', '展現方式', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('51', '首欄目內容列表', '1', 'cms_show_modes', '展現方式', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('52', '欄目第一條內容', '2', 'cms_show_modes', '展現方式', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('53', '發佈', '0', 'cms_del_flag', '內容狀態', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('54', '刪除', '1', 'cms_del_flag', '內容狀態', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('55', '審覈', '2', 'cms_del_flag', '內容狀態', '15', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('56', '首頁焦點圖', '1', 'cms_posid', '推薦位', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('57', '欄目頁文章推薦', '2', 'cms_posid', '推薦位', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('58', '諮詢', '1', 'cms_guestbook', '留言板分類', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('59', '建議', '2', 'cms_guestbook', '留言板分類', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('60', '投訴', '3', 'cms_guestbook', '留言板分類', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('61', '其它', '4', 'cms_guestbook', '留言板分類', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('62', '公休', '1', 'oa_leave_type', '請假類型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('63', '病假', '2', 'oa_leave_type', '請假類型', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('64', '事假', '3', 'oa_leave_type', '請假類型', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('65', '調休', '4', 'oa_leave_type', '請假類型', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('66', '婚假', '5', 'oa_leave_type', '請假類型', '60', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('67', '接入日誌', '1', 'sys_log_type', '日誌類型', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('68', '異常日誌', '2', 'sys_log_type', '日誌類型', '40', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('69', '請假流程', 'leave', 'act_type', '流程類型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('70', '審批測試流程', 'test_audit', 'act_type', '流程類型', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('71', '分類1', '1', 'act_category', '流程分類', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('72', '分類2', '2', 'act_category', '流程分類', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('73', '增刪改查', 'crud', 'gen_category', '代碼生成分類', '10', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('74', '增刪改查(包含從表)', 'crud_many', 'gen_category', '代碼生成分類', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('75', '樹結構', 'tree', 'gen_category', '代碼生成分類', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('76', '=', '=', 'gen_query_type', '查詢方式', '10', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('77', '!=', '!=', 'gen_query_type', '查詢方式', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('78', '&gt;', '&gt;', 'gen_query_type', '查詢方式', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('79', '&lt;', '&lt;', 'gen_query_type', '查詢方式', '40', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('80', 'Between', 'between', 'gen_query_type', '查詢方式', '50', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('81', 'Like', 'like', 'gen_query_type', '查詢方式', '60', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('82', 'Left Like', 'left_like', 'gen_query_type', '查詢方式', '70', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('83', 'Right Like', 'right_like', 'gen_query_type', '查詢方式', '80', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('84', '文本框', 'input', 'gen_show_type', '字段生成方案', '10', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('85', '文本域', 'textarea', 'gen_show_type', '字段生成方案', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('86', '下拉框', 'select', 'gen_show_type', '字段生成方案', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('87', '複選框', 'checkbox', 'gen_show_type', '字段生成方案', '40', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('88', '單選框', 'radiobox', 'gen_show_type', '字段生成方案', '50', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('89', '日期選擇', 'dateselect', 'gen_show_type', '字段生成方案', '60', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('90', '人員選擇', 'userselect', 'gen_show_type', '字段生成方案', '70', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('91', '部門選擇', 'officeselect', 'gen_show_type', '字段生成方案', '80', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('92', '區域選擇', 'areaselect', 'gen_show_type', '字段生成方案', '90', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('93', 'String', 'String', 'gen_java_type', 'Java類型', '10', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('94', 'Long', 'Long', 'gen_java_type', 'Java類型', '20', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('95', '僅持久層', 'dao', 'gen_category', '代碼生成分類', '40', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('96', '男', '1', 'sex', '性別', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('97', '女', '2', 'sex', '性別', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('98', 'Integer', 'Integer', 'gen_java_type', 'Java類型', '30', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('99', 'Double', 'Double', 'gen_java_type', 'Java類型', '40', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('100', 'Date', 'java.util.Date', 'gen_java_type', 'Java類型', '50', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('104', 'Custom', 'Custom', 'gen_java_type', 'Java類型', '90', '0', '1', null, '1', null, null, '1');
INSERT INTO `sys_dict` VALUES ('105', '會議通告', '1', 'oa_notify_type', '通知通告類型', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('106', '獎懲通告', '2', 'oa_notify_type', '通知通告類型', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('107', '活動通告', '3', 'oa_notify_type', '通知通告類型', '30', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('108', '草稿', '0', 'oa_notify_status', '通知通告狀態', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('109', '發佈', '1', 'oa_notify_status', '通知通告狀態', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('110', '未讀', '0', 'oa_notify_read', '通知通告狀態', '10', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('111', '已讀', '1', 'oa_notify_read', '通知通告狀態', '20', '0', '1', null, '1', null, null, '0');
INSERT INTO `sys_dict` VALUES ('112', '草稿', '0', 'oa_notify_status', '通知通告狀態', '10', '0', '1', null, '1', null, '', '0');
INSERT INTO `sys_dict` VALUES ('113', '刪除', '0', 'del_flag', '刪除標記', null, null, null, null, null, null, '', '');
INSERT INTO `sys_dict` VALUES ('118', '關於', 'about', 'blog_type', '博客類型', null, null, null, null, null, null, '全url是:/blog/open/page/about', '');
INSERT INTO `sys_dict` VALUES ('119', '交流', 'communication', 'blog_type', '博客類型', null, null, null, null, null, null, '', '');
INSERT INTO `sys_dict` VALUES ('120', '文章', 'article', 'blog_type', '博客類型', null, null, null, null, null, null, '', '');
INSERT INTO `sys_dict` VALUES ('121', '編碼', 'code', 'hobby', '愛好', null, null, null, null, null, null, '', '');
INSERT INTO `sys_dict` VALUES ('122', '繪畫', 'painting', 'hobby', '愛好', null, null, null, null, null, null, '', '');

-- ----------------------------
-- Table structure for `sys_file`
-- ----------------------------
DROP TABLE IF EXISTS `sys_file`;
CREATE TABLE `sys_file` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `type` int(11) DEFAULT NULL COMMENT '文件類型',
  `url` varchar(200) DEFAULT NULL COMMENT 'URL地址',
  `create_date` datetime DEFAULT NULL COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=141 DEFAULT CHARSET=utf8 COMMENT='文件上傳';

-- ----------------------------
-- Records of sys_file
-- ----------------------------
INSERT INTO `sys_file` VALUES ('110', '0', '/files/d64a62e3-6821-48f1-bac6-a1b9945f4afb.jpg', '2017-10-14 16:20:17');
INSERT INTO `sys_file` VALUES ('111', '0', '/files/aa2c3dc6-495f-48cc-8e12-446eceb2535e.jpg', '2017-10-14 16:20:21');
INSERT INTO `sys_file` VALUES ('114', '0', '/files/84c29777-11bc-44b9-818d-859f2d04d417.jpg', '2017-10-20 09:27:18');
INSERT INTO `sys_file` VALUES ('118', '0', '/files/a973499e-3ec7-4d43-8a52-b6f6517c77e3.jpg', '2017-10-20 11:53:52');
INSERT INTO `sys_file` VALUES ('132', '0', '/files/e6f13526-e31c-4ebe-a3cf-5fd88dd10be6.jpg', '2017-12-18 20:19:51');
INSERT INTO `sys_file` VALUES ('134', '0', '/files/cd016e72-77f7-4425-afe2-b79dfbdc3ae9.jpeg', '2017-12-18 22:44:07');
INSERT INTO `sys_file` VALUES ('138', '0', '/files/9ec12ee7-65b5-4cc5-9900-d2ec6185b336.jpg', '2017-12-19 19:55:27');
INSERT INTO `sys_file` VALUES ('139', '0', '/files/f6aab9d4-00a1-4bc8-a695-40fc472d4ea9.jpg', '2018-01-02 19:53:24');

-- ----------------------------
-- Table structure for `sys_log`
-- ----------------------------
DROP TABLE IF EXISTS `sys_log`;
CREATE TABLE `sys_log` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL COMMENT '用戶id',
  `username` varchar(50) DEFAULT NULL COMMENT '用戶名',
  `operation` varchar(50) DEFAULT NULL COMMENT '用戶操作',
  `time` int(11) DEFAULT NULL COMMENT '響應時間',
  `method` varchar(200) DEFAULT NULL COMMENT '請求方法',
  `params` varchar(5000) DEFAULT NULL COMMENT '請求參數',
  `ip` varchar(64) DEFAULT NULL COMMENT 'IP地址',
  `gmt_create` datetime DEFAULT NULL COMMENT '創建時間',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=372 DEFAULT CHARSET=utf8 COMMENT='系統日誌';

-- ----------------------------
-- Records of sys_log
-- ----------------------------
INSERT INTO `sys_log` VALUES ('1', '2', 'test', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 11:33:58');
INSERT INTO `sys_log` VALUES ('2', '2', 'test', '請求訪問主頁', '286', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 11:33:59');
INSERT INTO `sys_log` VALUES ('3', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 11:55:59');
INSERT INTO `sys_log` VALUES ('4', '1', 'admin', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 11:55:59');
INSERT INTO `sys_log` VALUES ('5', '1', 'admin', '請求訪問主頁', '11', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 11:56:56');
INSERT INTO `sys_log` VALUES ('6', '2', 'test', '登錄', '22', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 12:00:43');
INSERT INTO `sys_log` VALUES ('7', '2', 'test', '請求訪問主頁', '79', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:00:43');
INSERT INTO `sys_log` VALUES ('8', '2', 'test', '請求訪問主頁', '15', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:00:52');
INSERT INTO `sys_log` VALUES ('9', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 12:01:03');
INSERT INTO `sys_log` VALUES ('10', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:01:03');
INSERT INTO `sys_log` VALUES ('11', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:01:22');
INSERT INTO `sys_log` VALUES ('12', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:16:26');
INSERT INTO `sys_log` VALUES ('13', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 12:23:19');
INSERT INTO `sys_log` VALUES ('14', '1', 'admin', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:23:20');
INSERT INTO `sys_log` VALUES ('15', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 12:34:03');
INSERT INTO `sys_log` VALUES ('16', '1', 'admin', '請求訪問主頁', '81', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 12:34:04');
INSERT INTO `sys_log` VALUES ('17', '-1', '獲取用戶信息爲空', '登錄', '16', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 20:26:22');
INSERT INTO `sys_log` VALUES ('18', '1', 'admin', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-26 20:26:28');
INSERT INTO `sys_log` VALUES ('19', '1', 'admin', '請求訪問主頁', '52', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-26 20:26:29');
INSERT INTO `sys_log` VALUES ('20', '1', 'admin', '登錄', '47', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 15:33:29');
INSERT INTO `sys_log` VALUES ('21', '1', 'admin', '請求訪問主頁', '86', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 15:33:30');
INSERT INTO `sys_log` VALUES ('22', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 15:35:01');
INSERT INTO `sys_log` VALUES ('23', '1', 'admin', '請求訪問主頁', '282', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 15:35:01');
INSERT INTO `sys_log` VALUES ('24', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 16:54:20');
INSERT INTO `sys_log` VALUES ('25', '2', 'test', '請求訪問主頁', '53', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 16:54:21');
INSERT INTO `sys_log` VALUES ('26', '2', 'test', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:11:16');
INSERT INTO `sys_log` VALUES ('27', '2', 'test', '請求訪問主頁', '30', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:11:17');
INSERT INTO `sys_log` VALUES ('28', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:13:38');
INSERT INTO `sys_log` VALUES ('29', '2', 'test', '請求訪問主頁', '33', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:13:38');
INSERT INTO `sys_log` VALUES ('30', '2', 'test', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:14:54');
INSERT INTO `sys_log` VALUES ('31', '2', 'test', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:14:54');
INSERT INTO `sys_log` VALUES ('32', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:17:54');
INSERT INTO `sys_log` VALUES ('33', '2', 'test', '請求訪問主頁', '40', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:17:55');
INSERT INTO `sys_log` VALUES ('34', '2', 'test', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:22:06');
INSERT INTO `sys_log` VALUES ('35', '2', 'test', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:23:57');
INSERT INTO `sys_log` VALUES ('36', '2', 'test', '請求訪問主頁', '30', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:23:57');
INSERT INTO `sys_log` VALUES ('37', '2', 'test', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:26:31');
INSERT INTO `sys_log` VALUES ('38', '2', 'test', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:27:11');
INSERT INTO `sys_log` VALUES ('39', '2', 'test', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:29:24');
INSERT INTO `sys_log` VALUES ('40', '2', 'test', '請求訪問主頁', '307', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:29:25');
INSERT INTO `sys_log` VALUES ('41', '2', 'test', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:31:18');
INSERT INTO `sys_log` VALUES ('42', '2', 'test', '請求訪問主頁', '40', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:31:18');
INSERT INTO `sys_log` VALUES ('43', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:31:57');
INSERT INTO `sys_log` VALUES ('44', '1', 'admin', '請求訪問主頁', '22', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:31:57');
INSERT INTO `sys_log` VALUES ('45', '2', 'test', '登錄', '2', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:32:08');
INSERT INTO `sys_log` VALUES ('46', '2', 'test', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:32:09');
INSERT INTO `sys_log` VALUES ('47', '2', 'test', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:33:14');
INSERT INTO `sys_log` VALUES ('48', '2', 'test', '請求訪問主頁', '331', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:33:14');
INSERT INTO `sys_log` VALUES ('49', '2', 'test', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:41:30');
INSERT INTO `sys_log` VALUES ('50', '2', 'test', '請求訪問主頁', '33', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:41:31');
INSERT INTO `sys_log` VALUES ('51', '2', 'test', '登錄', '11', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-29 17:42:26');
INSERT INTO `sys_log` VALUES ('52', '2', 'test', '請求訪問主頁', '37', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-29 17:42:26');
INSERT INTO `sys_log` VALUES ('53', '2', 'test', '登錄', '31', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 11:04:28');
INSERT INTO `sys_log` VALUES ('54', '2', 'test', '請求訪問主頁', '288', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 11:04:28');
INSERT INTO `sys_log` VALUES ('55', '2', 'test', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 11:32:25');
INSERT INTO `sys_log` VALUES ('56', '2', 'test', '請求訪問主頁', '79', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 11:32:26');
INSERT INTO `sys_log` VALUES ('57', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 11:42:41');
INSERT INTO `sys_log` VALUES ('58', '2', 'test', '請求訪問主頁', '35', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 11:42:41');
INSERT INTO `sys_log` VALUES ('59', '2', 'test', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 11:46:15');
INSERT INTO `sys_log` VALUES ('60', '2', 'test', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 11:46:16');
INSERT INTO `sys_log` VALUES ('61', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 11:47:04');
INSERT INTO `sys_log` VALUES ('62', '2', 'test', '請求訪問主頁', '38', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 11:47:04');
INSERT INTO `sys_log` VALUES ('63', '2', 'test', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:09:16');
INSERT INTO `sys_log` VALUES ('64', '2', 'test', '請求訪問主頁', '37', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:09:17');
INSERT INTO `sys_log` VALUES ('65', '1', 'admin', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:09:26');
INSERT INTO `sys_log` VALUES ('66', '1', 'admin', '請求訪問主頁', '46', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:09:27');
INSERT INTO `sys_log` VALUES ('67', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:17:40');
INSERT INTO `sys_log` VALUES ('68', '1', 'admin', '請求訪問主頁', '26', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:17:40');
INSERT INTO `sys_log` VALUES ('69', '2', 'test', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:21:06');
INSERT INTO `sys_log` VALUES ('70', '2', 'test', '請求訪問主頁', '36', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:21:06');
INSERT INTO `sys_log` VALUES ('71', '1', 'admin', '登錄', '5', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:21:17');
INSERT INTO `sys_log` VALUES ('72', '1', 'admin', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:21:17');
INSERT INTO `sys_log` VALUES ('73', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:28:04');
INSERT INTO `sys_log` VALUES ('74', '1', 'admin', '請求訪問主頁', '40', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:28:05');
INSERT INTO `sys_log` VALUES ('75', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:36:22');
INSERT INTO `sys_log` VALUES ('76', '1', 'admin', '請求訪問主頁', '11', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:36:27');
INSERT INTO `sys_log` VALUES ('77', '2', 'test', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 12:43:18');
INSERT INTO `sys_log` VALUES ('78', '2', 'test', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 12:43:18');
INSERT INTO `sys_log` VALUES ('79', '2', 'test', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 16:24:41');
INSERT INTO `sys_log` VALUES ('80', '2', 'test', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 16:24:41');
INSERT INTO `sys_log` VALUES ('81', '1', 'admin', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 16:24:52');
INSERT INTO `sys_log` VALUES ('82', '1', 'admin', '請求訪問主頁', '22', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 16:24:52');
INSERT INTO `sys_log` VALUES ('83', '1', 'admin', '登錄', '49', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 19:34:39');
INSERT INTO `sys_log` VALUES ('84', '1', 'admin', '請求訪問主頁', '181', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 19:34:40');
INSERT INTO `sys_log` VALUES ('85', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 19:36:22');
INSERT INTO `sys_log` VALUES ('86', '1', 'admin', '請求訪問主頁', '18', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 19:39:39');
INSERT INTO `sys_log` VALUES ('87', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 19:48:54');
INSERT INTO `sys_log` VALUES ('88', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 19:48:54');
INSERT INTO `sys_log` VALUES ('89', '1', 'admin', '請求訪問主頁', '9', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 19:49:43');
INSERT INTO `sys_log` VALUES ('90', '1', 'admin', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-30 21:05:22');
INSERT INTO `sys_log` VALUES ('91', '1', 'admin', '請求訪問主頁', '16', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 21:05:22');
INSERT INTO `sys_log` VALUES ('92', '1', 'admin', '請求訪問主頁', '8', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-30 21:05:39');
INSERT INTO `sys_log` VALUES ('93', '2', 'test', '登錄', '2', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-31 14:56:37');
INSERT INTO `sys_log` VALUES ('94', '2', 'test', '請求訪問主頁', '44', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-31 14:56:38');
INSERT INTO `sys_log` VALUES ('95', '1', 'admin', '登錄', '1', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-31 14:58:39');
INSERT INTO `sys_log` VALUES ('96', '1', 'admin', '請求訪問主頁', '4', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-31 14:58:40');
INSERT INTO `sys_log` VALUES ('97', '1', 'admin', '請求訪問主頁', '5', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-31 14:59:26');
INSERT INTO `sys_log` VALUES ('98', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2017-12-31 15:03:53');
INSERT INTO `sys_log` VALUES ('99', '1', 'admin', '請求訪問主頁', '41', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2017-12-31 15:03:53');
INSERT INTO `sys_log` VALUES ('100', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 08:57:50');
INSERT INTO `sys_log` VALUES ('101', '1', 'admin', '請求訪問主頁', '71', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 08:57:50');
INSERT INTO `sys_log` VALUES ('102', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 09:45:46');
INSERT INTO `sys_log` VALUES ('103', '1', 'admin', '請求訪問主頁', '42', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 09:45:46');
INSERT INTO `sys_log` VALUES ('104', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 15:42:15');
INSERT INTO `sys_log` VALUES ('105', '1', 'admin', '請求訪問主頁', '140', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 15:42:15');
INSERT INTO `sys_log` VALUES ('106', '1', 'admin', '登錄', '4', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 15:53:54');
INSERT INTO `sys_log` VALUES ('107', '1', 'admin', '請求訪問主頁', '23', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 15:53:54');
INSERT INTO `sys_log` VALUES ('108', '1', 'admin', '請求訪問主頁', '15', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 16:14:20');
INSERT INTO `sys_log` VALUES ('109', '1', 'admin', '登錄', '13', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 16:29:03');
INSERT INTO `sys_log` VALUES ('110', '1', 'admin', '請求訪問主頁', '44', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 16:29:04');
INSERT INTO `sys_log` VALUES ('111', '1', 'admin', '請求訪問主頁', '27', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 16:30:30');
INSERT INTO `sys_log` VALUES ('112', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:09:49');
INSERT INTO `sys_log` VALUES ('113', '1', 'admin', '請求訪問主頁', '44', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:09:49');
INSERT INTO `sys_log` VALUES ('114', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:11:05');
INSERT INTO `sys_log` VALUES ('115', '1', 'admin', '請求訪問主頁', '45', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:11:05');
INSERT INTO `sys_log` VALUES ('116', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:15:11');
INSERT INTO `sys_log` VALUES ('117', '1', 'admin', '請求訪問主頁', '36', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:15:11');
INSERT INTO `sys_log` VALUES ('118', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:25:34');
INSERT INTO `sys_log` VALUES ('119', '1', 'admin', '請求訪問主頁', '33', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:25:35');
INSERT INTO `sys_log` VALUES ('120', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:28:02');
INSERT INTO `sys_log` VALUES ('121', '1', 'admin', '請求訪問主頁', '41', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:28:02');
INSERT INTO `sys_log` VALUES ('122', '1', 'admin', '登錄', '2', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 17:46:12');
INSERT INTO `sys_log` VALUES ('123', '1', 'admin', '請求訪問主頁', '7', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:46:12');
INSERT INTO `sys_log` VALUES ('124', '1', 'admin', '請求訪問主頁', '9', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 17:56:30');
INSERT INTO `sys_log` VALUES ('125', '1', 'admin', '登錄', '62', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 18:00:55');
INSERT INTO `sys_log` VALUES ('126', '1', 'admin', '請求訪問主頁', '155', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 18:00:55');
INSERT INTO `sys_log` VALUES ('127', '1', 'admin', '登錄', '64', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 19:15:24');
INSERT INTO `sys_log` VALUES ('128', '1', 'admin', '請求訪問主頁', '193', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 19:15:24');
INSERT INTO `sys_log` VALUES ('129', '1', 'admin', '登錄', '29', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 19:25:39');
INSERT INTO `sys_log` VALUES ('130', '1', 'admin', '請求訪問主頁', '177', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 19:25:40');
INSERT INTO `sys_log` VALUES ('131', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 19:33:21');
INSERT INTO `sys_log` VALUES ('132', '1', 'admin', '登錄', '5', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-02 19:43:32');
INSERT INTO `sys_log` VALUES ('133', '1', 'admin', '請求訪問主頁', '44', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-02 19:43:33');
INSERT INTO `sys_log` VALUES ('134', '1', 'admin', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 08:55:21');
INSERT INTO `sys_log` VALUES ('135', '1', 'admin', '請求訪問主頁', '42', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 08:55:21');
INSERT INTO `sys_log` VALUES ('136', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 09:22:30');
INSERT INTO `sys_log` VALUES ('137', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 09:22:30');
INSERT INTO `sys_log` VALUES ('138', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 09:34:05');
INSERT INTO `sys_log` VALUES ('139', '1', 'admin', '請求訪問主頁', '36', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 09:34:06');
INSERT INTO `sys_log` VALUES ('140', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 10:20:52');
INSERT INTO `sys_log` VALUES ('141', '1', 'admin', '請求訪問主頁', '38', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:20:52');
INSERT INTO `sys_log` VALUES ('142', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:25:21');
INSERT INTO `sys_log` VALUES ('143', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:35:33');
INSERT INTO `sys_log` VALUES ('144', '1', 'admin', '登錄', '5', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 10:39:20');
INSERT INTO `sys_log` VALUES ('145', '1', 'admin', '請求訪問主頁', '21', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:39:20');
INSERT INTO `sys_log` VALUES ('146', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:41:47');
INSERT INTO `sys_log` VALUES ('147', '1', 'admin', '請求訪問主頁', '11', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 10:46:26');
INSERT INTO `sys_log` VALUES ('148', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 11:07:24');
INSERT INTO `sys_log` VALUES ('149', '1', 'admin', '請求訪問主頁', '39', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 11:07:25');
INSERT INTO `sys_log` VALUES ('153', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 13:05:49');
INSERT INTO `sys_log` VALUES ('154', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 14:07:26');
INSERT INTO `sys_log` VALUES ('155', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 14:07:26');
INSERT INTO `sys_log` VALUES ('156', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 14:36:07');
INSERT INTO `sys_log` VALUES ('157', '1', 'admin', '請求訪問主頁', '39', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 14:36:07');
INSERT INTO `sys_log` VALUES ('158', '1', 'admin', '請求訪問主頁', '11', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 14:37:38');
INSERT INTO `sys_log` VALUES ('159', '1', 'admin', '請求訪問主頁', '303', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 14:37:39');
INSERT INTO `sys_log` VALUES ('160', '-1', '獲取用戶信息爲空', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 17:02:50');
INSERT INTO `sys_log` VALUES ('161', '-1', '獲取用戶信息爲空', '登錄', '2', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 17:03:16');
INSERT INTO `sys_log` VALUES ('162', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 17:58:43');
INSERT INTO `sys_log` VALUES ('163', '1', 'admin', '請求訪問主頁', '43', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 17:58:43');
INSERT INTO `sys_log` VALUES ('164', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 18:06:50');
INSERT INTO `sys_log` VALUES ('165', '1', 'admin', '請求訪問主頁', '62', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 18:06:50');
INSERT INTO `sys_log` VALUES ('166', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 18:08:49');
INSERT INTO `sys_log` VALUES ('167', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 18:10:41');
INSERT INTO `sys_log` VALUES ('168', '1', 'admin', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 18:10:41');
INSERT INTO `sys_log` VALUES ('169', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 18:10:47');
INSERT INTO `sys_log` VALUES ('170', '1', 'admin', '登錄', '15', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:18:39');
INSERT INTO `sys_log` VALUES ('171', '1', 'admin', '請求訪問主頁', '176', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 19:18:40');
INSERT INTO `sys_log` VALUES ('172', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 19:18:49');
INSERT INTO `sys_log` VALUES ('173', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:44:49');
INSERT INTO `sys_log` VALUES ('174', '1', 'admin', '登錄', '24', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:50:12');
INSERT INTO `sys_log` VALUES ('175', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:51:38');
INSERT INTO `sys_log` VALUES ('176', '1', 'admin', '登錄', '16', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:53:33');
INSERT INTO `sys_log` VALUES ('177', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:55:04');
INSERT INTO `sys_log` VALUES ('178', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 19:58:54');
INSERT INTO `sys_log` VALUES ('179', '1', 'admin', '登錄', '47', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 20:54:38');
INSERT INTO `sys_log` VALUES ('180', '1', 'admin', '請求訪問主頁', '28', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 20:54:39');
INSERT INTO `sys_log` VALUES ('181', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 21:36:56');
INSERT INTO `sys_log` VALUES ('182', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 21:36:56');
INSERT INTO `sys_log` VALUES ('183', '1', 'admin', '請求訪問主頁', '11', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 21:37:15');
INSERT INTO `sys_log` VALUES ('184', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 21:39:07');
INSERT INTO `sys_log` VALUES ('185', '1', 'admin', '請求訪問主頁', '16', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 21:39:07');
INSERT INTO `sys_log` VALUES ('186', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 21:46:18');
INSERT INTO `sys_log` VALUES ('187', '1', 'admin', '登錄', '15', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:00:38');
INSERT INTO `sys_log` VALUES ('188', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:01:53');
INSERT INTO `sys_log` VALUES ('189', '1', 'admin', '登錄', '16', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:04:27');
INSERT INTO `sys_log` VALUES ('190', '1', 'admin', '登錄', '13', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:10:23');
INSERT INTO `sys_log` VALUES ('191', '1', 'admin', '登錄', '13', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:13:25');
INSERT INTO `sys_log` VALUES ('192', '1', 'admin', '登錄', '15', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:16:08');
INSERT INTO `sys_log` VALUES ('193', '1', 'admin', '登錄', '31', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:16:10');
INSERT INTO `sys_log` VALUES ('194', '1', 'admin', '登錄', '13', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:23:23');
INSERT INTO `sys_log` VALUES ('195', '1', 'admin', '請求訪問主頁', '1951', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 22:23:27');
INSERT INTO `sys_log` VALUES ('196', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:36:21');
INSERT INTO `sys_log` VALUES ('197', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:36:21');
INSERT INTO `sys_log` VALUES ('198', '1', 'admin', '登錄', '28', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-03 22:36:21');
INSERT INTO `sys_log` VALUES ('199', '1', 'admin', '請求訪問主頁', '60', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 22:36:21');
INSERT INTO `sys_log` VALUES ('200', '1', 'admin', '請求訪問主頁', '56', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 22:36:21');
INSERT INTO `sys_log` VALUES ('201', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-03 22:38:04');
INSERT INTO `sys_log` VALUES ('202', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:46:15');
INSERT INTO `sys_log` VALUES ('203', '1', 'admin', '請求訪問主頁', '36', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:46:15');
INSERT INTO `sys_log` VALUES ('204', '1', 'admin', '登錄', '18', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:48:50');
INSERT INTO `sys_log` VALUES ('205', '1', 'admin', '請求訪問主頁', '43', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:48:50');
INSERT INTO `sys_log` VALUES ('206', '1', 'admin', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:50:17');
INSERT INTO `sys_log` VALUES ('207', '1', 'admin', '請求訪問主頁', '42', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:50:17');
INSERT INTO `sys_log` VALUES ('208', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:51:11');
INSERT INTO `sys_log` VALUES ('209', '1', 'admin', '請求訪問主頁', '33', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:51:11');
INSERT INTO `sys_log` VALUES ('210', '1', 'admin', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:53:49');
INSERT INTO `sys_log` VALUES ('211', '1', 'admin', '請求訪問主頁', '96', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:53:49');
INSERT INTO `sys_log` VALUES ('212', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 08:59:24');
INSERT INTO `sys_log` VALUES ('213', '1', 'admin', '請求訪問主頁', '35', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 08:59:24');
INSERT INTO `sys_log` VALUES ('214', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:04:28');
INSERT INTO `sys_log` VALUES ('215', '1', 'admin', '請求訪問主頁', '23', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:04:28');
INSERT INTO `sys_log` VALUES ('216', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:06:22');
INSERT INTO `sys_log` VALUES ('217', '1', 'admin', '請求訪問主頁', '20', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:06:22');
INSERT INTO `sys_log` VALUES ('218', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:07:43');
INSERT INTO `sys_log` VALUES ('219', '1', 'admin', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:07:44');
INSERT INTO `sys_log` VALUES ('220', '1', 'admin', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:09:31');
INSERT INTO `sys_log` VALUES ('221', '1', 'admin', '請求訪問主頁', '38', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:09:31');
INSERT INTO `sys_log` VALUES ('222', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:17:12');
INSERT INTO `sys_log` VALUES ('223', '1', 'admin', '請求訪問主頁', '34', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:17:12');
INSERT INTO `sys_log` VALUES ('224', '1', 'admin', '登錄', '0', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:17:48');
INSERT INTO `sys_log` VALUES ('225', '1', 'admin', '請求訪問主頁', '45', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:17:48');
INSERT INTO `sys_log` VALUES ('226', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:19:20');
INSERT INTO `sys_log` VALUES ('227', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:19:22');
INSERT INTO `sys_log` VALUES ('228', '1', 'admin', '登錄', '25', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:20:33');
INSERT INTO `sys_log` VALUES ('229', '1', 'admin', '登錄', '17', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:23:46');
INSERT INTO `sys_log` VALUES ('230', '1', 'admin', '登錄', '11', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:24:47');
INSERT INTO `sys_log` VALUES ('231', '1', 'admin', '請求訪問主頁', '30', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:24:47');
INSERT INTO `sys_log` VALUES ('232', '1', 'admin', '登錄', '22', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:30:08');
INSERT INTO `sys_log` VALUES ('233', '1', 'admin', '請求訪問主頁', '41', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:30:08');
INSERT INTO `sys_log` VALUES ('234', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:34:03');
INSERT INTO `sys_log` VALUES ('235', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:34:04');
INSERT INTO `sys_log` VALUES ('236', '1', 'admin', '登錄', '19', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 09:35:51');
INSERT INTO `sys_log` VALUES ('237', '1', 'admin', '請求訪問主頁', '40', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 09:35:52');
INSERT INTO `sys_log` VALUES ('238', '1', 'admin', '登錄', '34', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:20');
INSERT INTO `sys_log` VALUES ('239', '1', 'admin', '請求訪問主頁', '75', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:20');
INSERT INTO `sys_log` VALUES ('240', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:23');
INSERT INTO `sys_log` VALUES ('241', '1', 'admin', '請求訪問主頁', '63', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:24');
INSERT INTO `sys_log` VALUES ('242', '1', 'admin', '登錄', '14', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:27');
INSERT INTO `sys_log` VALUES ('243', '1', 'admin', '請求訪問主頁', '26', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:27');
INSERT INTO `sys_log` VALUES ('244', '1', 'admin', '登錄', '11', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:28');
INSERT INTO `sys_log` VALUES ('245', '1', 'admin', '請求訪問主頁', '22', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:28');
INSERT INTO `sys_log` VALUES ('246', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:31');
INSERT INTO `sys_log` VALUES ('247', '1', 'admin', '請求訪問主頁', '25', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:32');
INSERT INTO `sys_log` VALUES ('248', '1', 'admin', '登錄', '13', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:35');
INSERT INTO `sys_log` VALUES ('249', '1', 'admin', '請求訪問主頁', '21', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:35');
INSERT INTO `sys_log` VALUES ('250', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:39');
INSERT INTO `sys_log` VALUES ('251', '1', 'admin', '請求訪問主頁', '23', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:39');
INSERT INTO `sys_log` VALUES ('252', '1', 'admin', '登錄', '16', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:32:52');
INSERT INTO `sys_log` VALUES ('253', '1', 'admin', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:32:52');
INSERT INTO `sys_log` VALUES ('254', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:33:08');
INSERT INTO `sys_log` VALUES ('255', '1', 'admin', '請求訪問主頁', '21', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:33:08');
INSERT INTO `sys_log` VALUES ('256', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:34:30');
INSERT INTO `sys_log` VALUES ('257', '1', 'admin', '請求訪問主頁', '23', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:34:30');
INSERT INTO `sys_log` VALUES ('258', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:34:31');
INSERT INTO `sys_log` VALUES ('259', '1', 'admin', '請求訪問主頁', '40', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:34:32');
INSERT INTO `sys_log` VALUES ('260', '1', 'admin', '登錄', '14', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:34:35');
INSERT INTO `sys_log` VALUES ('261', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:34:35');
INSERT INTO `sys_log` VALUES ('262', '1', 'admin', '登錄', '30', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:34:35');
INSERT INTO `sys_log` VALUES ('263', '1', 'admin', '請求訪問主頁', '47', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:34:35');
INSERT INTO `sys_log` VALUES ('264', '1', 'admin', '請求訪問主頁', '25', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:34:35');
INSERT INTO `sys_log` VALUES ('265', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:35:46');
INSERT INTO `sys_log` VALUES ('266', '1', 'admin', '請求訪問主頁', '36', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:35:46');
INSERT INTO `sys_log` VALUES ('267', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:35:51');
INSERT INTO `sys_log` VALUES ('268', '1', 'admin', '請求訪問主頁', '26', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:35:51');
INSERT INTO `sys_log` VALUES ('269', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:36:11');
INSERT INTO `sys_log` VALUES ('270', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:36:11');
INSERT INTO `sys_log` VALUES ('271', '1', 'admin', '登錄', '15', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:36:14');
INSERT INTO `sys_log` VALUES ('272', '1', 'admin', '請求訪問主頁', '23', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:36:14');
INSERT INTO `sys_log` VALUES ('273', '1', 'admin', '登錄', '12', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:36:17');
INSERT INTO `sys_log` VALUES ('274', '1', 'admin', '請求訪問主頁', '17', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:36:17');
INSERT INTO `sys_log` VALUES ('275', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:36:19');
INSERT INTO `sys_log` VALUES ('276', '1', 'admin', '請求訪問主頁', '28', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:36:20');
INSERT INTO `sys_log` VALUES ('277', '1', 'admin', '登錄', '14', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:36:21');
INSERT INTO `sys_log` VALUES ('278', '1', 'admin', '請求訪問主頁', '19', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:36:21');
INSERT INTO `sys_log` VALUES ('279', '1', 'admin', '登錄', '20', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:21');
INSERT INTO `sys_log` VALUES ('280', '1', 'admin', '請求訪問主頁', '32', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:22');
INSERT INTO `sys_log` VALUES ('281', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:23');
INSERT INTO `sys_log` VALUES ('282', '1', 'admin', '請求訪問主頁', '27', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:23');
INSERT INTO `sys_log` VALUES ('283', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:27');
INSERT INTO `sys_log` VALUES ('284', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:27');
INSERT INTO `sys_log` VALUES ('285', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:32');
INSERT INTO `sys_log` VALUES ('286', '1', 'admin', '請求訪問主頁', '20', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:32');
INSERT INTO `sys_log` VALUES ('287', '1', 'admin', '登錄', '7', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:37');
INSERT INTO `sys_log` VALUES ('288', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:37');
INSERT INTO `sys_log` VALUES ('289', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:38:42');
INSERT INTO `sys_log` VALUES ('290', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:38:42');
INSERT INTO `sys_log` VALUES ('291', '1', 'admin', '登錄', '19', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:24');
INSERT INTO `sys_log` VALUES ('292', '1', 'admin', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:39:24');
INSERT INTO `sys_log` VALUES ('293', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:27');
INSERT INTO `sys_log` VALUES ('294', '1', 'admin', '請求訪問主頁', '20', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:39:27');
INSERT INTO `sys_log` VALUES ('295', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:32');
INSERT INTO `sys_log` VALUES ('296', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:34');
INSERT INTO `sys_log` VALUES ('297', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:39:34');
INSERT INTO `sys_log` VALUES ('298', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:37');
INSERT INTO `sys_log` VALUES ('299', '1', 'admin', '請求訪問主頁', '7', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:39:37');
INSERT INTO `sys_log` VALUES ('300', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:39:38');
INSERT INTO `sys_log` VALUES ('301', '1', 'admin', '請求訪問主頁', '9', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:39:38');
INSERT INTO `sys_log` VALUES ('302', '1', 'admin', '登錄', '19', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:40:07');
INSERT INTO `sys_log` VALUES ('303', '1', 'admin', '請求訪問主頁', '31', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:40:07');
INSERT INTO `sys_log` VALUES ('304', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:40:11');
INSERT INTO `sys_log` VALUES ('305', '1', 'admin', '請求訪問主頁', '14', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:40:12');
INSERT INTO `sys_log` VALUES ('306', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:40:13');
INSERT INTO `sys_log` VALUES ('307', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:40:14');
INSERT INTO `sys_log` VALUES ('308', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:40:16');
INSERT INTO `sys_log` VALUES ('309', '1', 'admin', '請求訪問主頁', '18', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:40:17');
INSERT INTO `sys_log` VALUES ('310', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:40:19');
INSERT INTO `sys_log` VALUES ('311', '1', 'admin', '請求訪問主頁', '13', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:40:20');
INSERT INTO `sys_log` VALUES ('312', '1', 'admin', '登錄', '11', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:41:35');
INSERT INTO `sys_log` VALUES ('313', '1', 'admin', '請求訪問主頁', '16', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:41:35');
INSERT INTO `sys_log` VALUES ('314', '1', 'admin', '登錄', '15', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:48:25');
INSERT INTO `sys_log` VALUES ('315', '1', 'admin', '請求訪問主頁', '26', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:48:25');
INSERT INTO `sys_log` VALUES ('316', '1', 'admin', '登錄', '17', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 10:49:37');
INSERT INTO `sys_log` VALUES ('317', '1', 'admin', '請求訪問主頁', '34', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 10:49:38');
INSERT INTO `sys_log` VALUES ('318', '1', 'admin', '登錄', '107', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 11:39:55');
INSERT INTO `sys_log` VALUES ('319', '1', 'admin', '請求訪問主頁', '52', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 11:39:55');
INSERT INTO `sys_log` VALUES ('320', '1', 'admin', '登錄', '45', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 11:44:27');
INSERT INTO `sys_log` VALUES ('321', '1', 'admin', '請求訪問主頁', '77', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 11:44:27');
INSERT INTO `sys_log` VALUES ('322', '1', 'admin', '登錄', '11', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 11:51:26');
INSERT INTO `sys_log` VALUES ('323', '1', 'admin', '請求訪問主頁', '39', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 11:51:26');
INSERT INTO `sys_log` VALUES ('324', '1', 'admin', '更新用戶', '266', 'com.bootdo.system.controller.UserController.updatePeronal()', null, '127.0.0.1', '2018-01-04 11:52:15');
INSERT INTO `sys_log` VALUES ('325', '1', 'admin', '登錄', '16', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 11:54:09');
INSERT INTO `sys_log` VALUES ('326', '1', 'admin', '請求訪問主頁', '65', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 11:54:09');
INSERT INTO `sys_log` VALUES ('327', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 11:58:28');
INSERT INTO `sys_log` VALUES ('328', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 11:58:28');
INSERT INTO `sys_log` VALUES ('329', '1', 'admin', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 12:37:42');
INSERT INTO `sys_log` VALUES ('330', '1', 'admin', '請求訪問主頁', '34', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 12:37:42');
INSERT INTO `sys_log` VALUES ('331', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 12:38:46');
INSERT INTO `sys_log` VALUES ('332', '1', 'admin', '請求訪問主頁', '14', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 12:41:28');
INSERT INTO `sys_log` VALUES ('333', '1', 'admin', '登錄', '3', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 12:48:37');
INSERT INTO `sys_log` VALUES ('334', '1', 'admin', '請求訪問主頁', '10', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 12:48:37');
INSERT INTO `sys_log` VALUES ('335', '1', 'admin', '登錄', '17', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:09:47');
INSERT INTO `sys_log` VALUES ('336', '1', 'admin', '請求訪問主頁', '67', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:09:47');
INSERT INTO `sys_log` VALUES ('337', '2', 'test', '登錄', '22', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:16:42');
INSERT INTO `sys_log` VALUES ('338', '2', 'test', '請求訪問主頁', '65', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:16:42');
INSERT INTO `sys_log` VALUES ('339', '2', 'test', '請求訪問主頁', '20', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:16:56');
INSERT INTO `sys_log` VALUES ('340', '2', 'test', '登錄', '8', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:20:53');
INSERT INTO `sys_log` VALUES ('341', '2', 'test', '請求訪問主頁', '42', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:20:53');
INSERT INTO `sys_log` VALUES ('342', '2', 'test', '登錄', '22', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:23:23');
INSERT INTO `sys_log` VALUES ('343', '2', 'test', '請求訪問主頁', '77', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:23:24');
INSERT INTO `sys_log` VALUES ('344', '2', 'test', '登錄', '19', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:29:52');
INSERT INTO `sys_log` VALUES ('345', '2', 'test', '請求訪問主頁', '66', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:29:53');
INSERT INTO `sys_log` VALUES ('346', '-1', '獲取用戶信息爲空', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:37:51');
INSERT INTO `sys_log` VALUES ('347', '1', 'admin', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:37:55');
INSERT INTO `sys_log` VALUES ('348', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:37:55');
INSERT INTO `sys_log` VALUES ('349', '1', 'admin', '批量刪除角色', '144', 'com.bootdo.system.controller.RoleController.batchRemove()', null, '127.0.0.1', '2018-01-04 13:38:20');
INSERT INTO `sys_log` VALUES ('350', '1', 'admin', '登錄', '10', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:48:13');
INSERT INTO `sys_log` VALUES ('351', '1', 'admin', '請求訪問主頁', '24', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:48:13');
INSERT INTO `sys_log` VALUES ('352', '1', 'admin', '添加角色', '0', 'com.bootdo.system.controller.RoleController.add()', null, '127.0.0.1', '2018-01-04 13:48:18');
INSERT INTO `sys_log` VALUES ('353', '1', 'admin', '保存角色', '155', 'com.bootdo.system.controller.RoleController.save()', null, '127.0.0.1', '2018-01-04 13:48:24');
INSERT INTO `sys_log` VALUES ('354', '1', 'admin', '添加角色', '0', 'com.bootdo.system.controller.RoleController.add()', null, '127.0.0.1', '2018-01-04 13:48:25');
INSERT INTO `sys_log` VALUES ('355', '1', 'admin', '保存角色', '160', 'com.bootdo.system.controller.RoleController.save()', null, '127.0.0.1', '2018-01-04 13:48:29');
INSERT INTO `sys_log` VALUES ('356', '1', 'admin', '批量刪除角色', '127', 'com.bootdo.system.controller.RoleController.batchRemove()', null, '127.0.0.1', '2018-01-04 13:48:35');
INSERT INTO `sys_log` VALUES ('357', '1', 'admin', '提交更改用戶密碼', '3', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:51:24');
INSERT INTO `sys_log` VALUES ('358', '1', 'admin', '提交更改用戶密碼', '4', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:51:30');
INSERT INTO `sys_log` VALUES ('359', '1', 'admin', '提交更改用戶密碼', '4', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:51:46');
INSERT INTO `sys_log` VALUES ('360', '1', 'admin', '提交更改用戶密碼', '3', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:52:19');
INSERT INTO `sys_log` VALUES ('361', '1', 'admin', '請求更改用戶密碼', '0', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:54:39');
INSERT INTO `sys_log` VALUES ('362', '1', 'admin', 'admin提交更改用戶密碼', '7', 'com.bootdo.system.controller.UserController.adminResetPwd()', null, '127.0.0.1', '2018-01-04 13:54:47');
INSERT INTO `sys_log` VALUES ('363', '1', 'admin', '登錄', '9', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:55:32');
INSERT INTO `sys_log` VALUES ('364', '1', 'admin', '請求訪問主頁', '31', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:55:32');
INSERT INTO `sys_log` VALUES ('365', '1', 'admin', '提交更改用戶密碼', '23782', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:56:09');
INSERT INTO `sys_log` VALUES ('366', '-1', '獲取用戶信息爲空', '登錄', '6', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:57:18');
INSERT INTO `sys_log` VALUES ('367', '1', 'admin', '登錄', '5', 'com.bootdo.system.controller.LoginController.ajaxLogin()', null, '127.0.0.1', '2018-01-04 13:57:22');
INSERT INTO `sys_log` VALUES ('368', '1', 'admin', '請求訪問主頁', '29', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:57:22');
INSERT INTO `sys_log` VALUES ('369', '1', 'admin', '提交更改用戶密碼', '147', 'com.bootdo.system.controller.UserController.resetPwd()', null, '127.0.0.1', '2018-01-04 13:57:35');
INSERT INTO `sys_log` VALUES ('370', '1', 'admin', '請求訪問主頁', '12', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:57:39');
INSERT INTO `sys_log` VALUES ('371', '1', 'admin', '請求訪問主頁', '15', 'com.bootdo.system.controller.LoginController.index()', null, '127.0.0.1', '2018-01-04 13:57:40');

-- ----------------------------
-- Table structure for `sys_menu`
-- ----------------------------
DROP TABLE IF EXISTS `sys_menu`;
CREATE TABLE `sys_menu` (
  `menu_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `parent_id` bigint(20) DEFAULT NULL COMMENT '父菜單ID,一級菜單爲0',
  `name` varchar(50) DEFAULT NULL COMMENT '菜單名稱',
  `url` varchar(200) DEFAULT NULL COMMENT '菜單URL',
  `perms` varchar(500) DEFAULT NULL COMMENT '授權(多個用逗號分隔,如:user:list,user:create)',
  `type` int(11) DEFAULT NULL COMMENT '類型   0:目錄   1:菜單   2:按鈕',
  `icon` varchar(50) DEFAULT NULL COMMENT '菜單圖標',
  `order_num` int(11) DEFAULT NULL COMMENT '排序',
  `gmt_create` datetime DEFAULT NULL COMMENT '創建時間',
  `gmt_modified` datetime DEFAULT NULL COMMENT '修改時間',
  PRIMARY KEY (`menu_id`)
) ENGINE=InnoDB AUTO_INCREMENT=102 DEFAULT CHARSET=utf8 COMMENT='菜單管理';

-- ----------------------------
-- Records of sys_menu
-- ----------------------------
INSERT INTO `sys_menu` VALUES ('1', '0', '基礎管理', '', '', '0', 'fa fa-bars', '0', '2017-08-09 22:49:47', null);
INSERT INTO `sys_menu` VALUES ('2', '3', '系統菜單', 'sys/menu/', 'sys:menu:menu', '1', 'fa fa-th-list', '2', '2017-08-09 22:55:15', null);
INSERT INTO `sys_menu` VALUES ('3', '0', '系統管理', null, null, '0', 'fa fa-desktop', '1', '2017-08-09 23:06:55', '2017-08-14 14:13:43');
INSERT INTO `sys_menu` VALUES ('6', '3', '用戶管理', 'sys/user/', 'sys:user:user', '1', 'fa fa-user', '0', '2017-08-10 14:12:11', null);
INSERT INTO `sys_menu` VALUES ('7', '3', '角色管理', 'sys/role', 'sys:role:role', '1', 'fa fa-paw', '1', '2017-08-10 14:13:19', null);
INSERT INTO `sys_menu` VALUES ('12', '6', '新增', '', 'sys:user:add', '2', '', '0', '2017-08-14 10:51:35', null);
INSERT INTO `sys_menu` VALUES ('13', '6', '編輯', '', 'sys:user:edit', '2', '', '0', '2017-08-14 10:52:06', null);
INSERT INTO `sys_menu` VALUES ('14', '6', '刪除', null, 'sys:user:remove', '2', null, '0', '2017-08-14 10:52:24', null);
INSERT INTO `sys_menu` VALUES ('15', '7', '新增', '', 'sys:role:add', '2', '', '0', '2017-08-14 10:56:37', null);
INSERT INTO `sys_menu` VALUES ('20', '2', '新增', '', 'sys:menu:add', '2', '', '0', '2017-08-14 10:59:32', null);
INSERT INTO `sys_menu` VALUES ('21', '2', '編輯', '', 'sys:menu:edit', '2', '', '0', '2017-08-14 10:59:56', null);
INSERT INTO `sys_menu` VALUES ('22', '2', '刪除', '', 'sys:menu:remove', '2', '', '0', '2017-08-14 11:00:26', null);
INSERT INTO `sys_menu` VALUES ('24', '6', '批量刪除', '', 'sys:user:batchRemove', '2', '', '0', '2017-08-14 17:27:18', null);
INSERT INTO `sys_menu` VALUES ('25', '6', '停用', null, 'sys:user:disable', '2', null, '0', '2017-08-14 17:27:43', null);
INSERT INTO `sys_menu` VALUES ('26', '6', '重置密碼', '', 'sys:user:resetPwd', '2', '', '0', '2017-08-14 17:28:34', null);
INSERT INTO `sys_menu` VALUES ('27', '91', '系統日誌', 'common/log', 'common:log', '1', 'fa fa-warning', '0', '2017-08-14 22:11:53', null);
INSERT INTO `sys_menu` VALUES ('28', '27', '刷新', null, 'sys:log:list', '2', null, '0', '2017-08-14 22:30:22', null);
INSERT INTO `sys_menu` VALUES ('29', '27', '刪除', null, 'sys:log:remove', '2', null, '0', '2017-08-14 22:30:43', null);
INSERT INTO `sys_menu` VALUES ('30', '27', '清空', null, 'sys:log:clear', '2', null, '0', '2017-08-14 22:31:02', null);
INSERT INTO `sys_menu` VALUES ('48', '77', '代碼生成', 'common/generator', 'common:generator', '1', 'fa fa-code', '3', null, null);
INSERT INTO `sys_menu` VALUES ('49', '0', '博客管理', '', '', '0', 'fa fa-rss', '6', null, null);
INSERT INTO `sys_menu` VALUES ('50', '49', '文章列表', 'blog/bContent', 'blog:bContent:bContent', '1', 'fa fa-file-image-o', '1', null, null);
INSERT INTO `sys_menu` VALUES ('51', '50', '新增', '', 'blog:bContent:add', '2', '', null, null, null);
INSERT INTO `sys_menu` VALUES ('55', '7', '編輯', '', 'sys:role:edit', '2', '', null, null, null);
INSERT INTO `sys_menu` VALUES ('56', '7', '刪除', '', 'sys:role:remove', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('57', '91', '運行監控', '/druid/index.html', '', '1', 'fa fa-caret-square-o-right', '1', null, null);
INSERT INTO `sys_menu` VALUES ('58', '50', '編輯', '', 'blog:bContent:edit', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('59', '50', '刪除', '', 'blog:bContent:remove', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('60', '50', '批量刪除', '', 'blog:bContent:batchRemove', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('61', '2', '批量刪除', '', 'sys:menu:batchRemove', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('62', '7', '批量刪除', '', 'sys:role:batchRemove', '2', null, null, null, null);
INSERT INTO `sys_menu` VALUES ('68', '49', '發佈文章', '/blog/bContent/add', 'blog:bContent:add', '1', 'fa fa-edit', '0', null, null);
INSERT INTO `sys_menu` VALUES ('71', '1', '文件管理', '/common/sysFile', 'common:sysFile:sysFile', '1', 'fa fa-folder-open', '2', null, null);
INSERT INTO `sys_menu` VALUES ('72', '77', '計劃任務', 'common/job', 'common:taskScheduleJob', '1', 'fa fa-hourglass-1', '4', null, null);
INSERT INTO `sys_menu` VALUES ('73', '3', '部門管理', '/system/sysDept', 'system:sysDept:sysDept', '1', 'fa fa-users', '3', null, null);
INSERT INTO `sys_menu` VALUES ('74', '73', '增加', '/system/sysDept/add', 'system:sysDept:add', '2', null, '1', null, null);
INSERT INTO `sys_menu` VALUES ('75', '73', '刪除', 'system/sysDept/remove', 'system:sysDept:remove', '2', null, '2', null, null);
INSERT INTO `sys_menu` VALUES ('76', '73', '編輯', '/system/sysDept/edit', 'system:sysDept:edit', '2', null, '3', null, null);
INSERT INTO `sys_menu` VALUES ('77', '0', '系統工具', '', '', '0', 'fa fa-gear', '4', null, null);
INSERT INTO `sys_menu` VALUES ('78', '1', '數據字典', '/common/dict', 'common:dict:dict', '1', 'fa fa-book', '1', null, null);
INSERT INTO `sys_menu` VALUES ('79', '78', '增加', '/common/dict/add', 'common:dict:add', '2', null, '2', null, null);
INSERT INTO `sys_menu` VALUES ('80', '78', '編輯', '/common/dict/edit', 'common:dict:edit', '2', null, '2', null, null);
INSERT INTO `sys_menu` VALUES ('81', '78', '刪除', '/common/dict/remove', 'common:dict:remove', '2', '', '3', null, null);
INSERT INTO `sys_menu` VALUES ('83', '78', '批量刪除', '/common/dict/batchRemove', 'common:dict:batchRemove', '2', '', '4', null, null);
INSERT INTO `sys_menu` VALUES ('84', '0', '辦公管理', '', '', '0', 'fa fa-laptop', '5', null, null);
INSERT INTO `sys_menu` VALUES ('85', '84', '通知公告', 'oa/notify', 'oa:notify:notify', '1', 'fa fa-pencil-square', null, null, null);
INSERT INTO `sys_menu` VALUES ('86', '85', '新增', 'oa/notify/add', 'oa:notify:add', '2', 'fa fa-plus', '1', null, null);
INSERT INTO `sys_menu` VALUES ('87', '85', '編輯', 'oa/notify/edit', 'oa:notify:edit', '2', 'fa fa-pencil-square-o', '2', null, null);
INSERT INTO `sys_menu` VALUES ('88', '85', '刪除', 'oa/notify/remove', 'oa:notify:remove', '2', 'fa fa-minus', null, null, null);
INSERT INTO `sys_menu` VALUES ('89', '85', '批量刪除', 'oa/notify/batchRemove', 'oa:notify:batchRemove', '2', '', null, null, null);
INSERT INTO `sys_menu` VALUES ('90', '84', '我的通知', 'oa/notify/selfNotify', '', '1', 'fa fa-envelope-square', null, null, null);
INSERT INTO `sys_menu` VALUES ('91', '0', '系統監控', '', '', '0', 'fa fa-video-camera', '5', null, null);
INSERT INTO `sys_menu` VALUES ('92', '91', '在線用戶', 'sys/online', '', '1', 'fa fa-user', null, null, null);
INSERT INTO `sys_menu` VALUES ('93', '0', '工作流程', '', '', '0', 'fa fa-print', '6', null, null);
INSERT INTO `sys_menu` VALUES ('94', '93', '模型管理', 'activiti/model', '', '1', 'fa fa-sort-amount-asc', null, null, null);
INSERT INTO `sys_menu` VALUES ('95', '94', '全部權限', '', 'activiti:model', '2', '', null, null, null);
INSERT INTO `sys_menu` VALUES ('96', '93', '流程管理', 'activiti/process', '', '1', 'fa fa-flag', null, null, null);
INSERT INTO `sys_menu` VALUES ('97', '0', '圖表管理', '', '', '0', 'fa fa-bar-chart', '7', null, null);
INSERT INTO `sys_menu` VALUES ('98', '97', '百度chart', '/chart/graph_echarts.html', '', '1', 'fa fa-area-chart', null, null, null);
INSERT INTO `sys_menu` VALUES ('99', '96', '所有權限', '', 'act:process', '2', '', null, null, null);
INSERT INTO `sys_menu` VALUES ('101', '93', '待辦任務', 'activiti/task/todo', '', '1', '', null, null, null);

-- ----------------------------
-- Table structure for `sys_role`
-- ----------------------------
DROP TABLE IF EXISTS `sys_role`;
CREATE TABLE `sys_role` (
  `role_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `role_name` varchar(100) DEFAULT NULL COMMENT '角色名稱',
  `role_sign` varchar(100) DEFAULT NULL COMMENT '角色標識',
  `remark` varchar(100) DEFAULT NULL COMMENT '備註',
  `user_id_create` bigint(255) DEFAULT NULL COMMENT '創建用戶id',
  `gmt_create` datetime DEFAULT NULL COMMENT '創建時間',
  `gmt_modified` datetime DEFAULT NULL COMMENT '創建時間',
  PRIMARY KEY (`role_id`)
) ENGINE=InnoDB AUTO_INCREMENT=59 DEFAULT CHARSET=utf8 COMMENT='角色';

-- ----------------------------
-- Records of sys_role
-- ----------------------------
INSERT INTO `sys_role` VALUES ('1', '超級用戶角色', 'admin', '擁有最高權限', '2', '2017-08-12 00:43:52', '2017-08-12 19:14:59');

-- ----------------------------
-- Table structure for `sys_role_menu`
-- ----------------------------
DROP TABLE IF EXISTS `sys_role_menu`;
CREATE TABLE `sys_role_menu` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
  `menu_id` bigint(20) DEFAULT NULL COMMENT '菜單ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=2988 DEFAULT CHARSET=utf8 COMMENT='角色與菜單對應關係';

-- ----------------------------
-- Records of sys_role_menu
-- ----------------------------
INSERT INTO `sys_role_menu` VALUES ('367', '44', '1');
INSERT INTO `sys_role_menu` VALUES ('368', '44', '32');
INSERT INTO `sys_role_menu` VALUES ('369', '44', '33');
INSERT INTO `sys_role_menu` VALUES ('370', '44', '34');
INSERT INTO `sys_role_menu` VALUES ('371', '44', '35');
INSERT INTO `sys_role_menu` VALUES ('372', '44', '28');
INSERT INTO `sys_role_menu` VALUES ('373', '44', '29');
INSERT INTO `sys_role_menu` VALUES ('374', '44', '30');
INSERT INTO `sys_role_menu` VALUES ('375', '44', '38');
INSERT INTO `sys_role_menu` VALUES ('376', '44', '4');
INSERT INTO `sys_role_menu` VALUES ('377', '44', '27');
INSERT INTO `sys_role_menu` VALUES ('378', '45', '38');
INSERT INTO `sys_role_menu` VALUES ('379', '46', '3');
INSERT INTO `sys_role_menu` VALUES ('380', '46', '20');
INSERT INTO `sys_role_menu` VALUES ('381', '46', '21');
INSERT INTO `sys_role_menu` VALUES ('382', '46', '22');
INSERT INTO `sys_role_menu` VALUES ('383', '46', '23');
INSERT INTO `sys_role_menu` VALUES ('384', '46', '11');
INSERT INTO `sys_role_menu` VALUES ('385', '46', '12');
INSERT INTO `sys_role_menu` VALUES ('386', '46', '13');
INSERT INTO `sys_role_menu` VALUES ('387', '46', '14');
INSERT INTO `sys_role_menu` VALUES ('388', '46', '24');
INSERT INTO `sys_role_menu` VALUES ('389', '46', '25');
INSERT INTO `sys_role_menu` VALUES ('390', '46', '26');
INSERT INTO `sys_role_menu` VALUES ('391', '46', '15');
INSERT INTO `sys_role_menu` VALUES ('392', '46', '2');
INSERT INTO `sys_role_menu` VALUES ('393', '46', '6');
INSERT INTO `sys_role_menu` VALUES ('394', '46', '7');
INSERT INTO `sys_role_menu` VALUES ('598', '50', '38');
INSERT INTO `sys_role_menu` VALUES ('632', '38', '42');
INSERT INTO `sys_role_menu` VALUES ('737', '51', '38');
INSERT INTO `sys_role_menu` VALUES ('738', '51', '39');
INSERT INTO `sys_role_menu` VALUES ('739', '51', '40');
INSERT INTO `sys_role_menu` VALUES ('740', '51', '41');
INSERT INTO `sys_role_menu` VALUES ('741', '51', '4');
INSERT INTO `sys_role_menu` VALUES ('742', '51', '32');
INSERT INTO `sys_role_menu` VALUES ('743', '51', '33');
INSERT INTO `sys_role_menu` VALUES ('744', '51', '34');
INSERT INTO `sys_role_menu` VALUES ('745', '51', '35');
INSERT INTO `sys_role_menu` VALUES ('746', '51', '27');
INSERT INTO `sys_role_menu` VALUES ('747', '51', '28');
INSERT INTO `sys_role_menu` VALUES ('748', '51', '29');
INSERT INTO `sys_role_menu` VALUES ('749', '51', '30');
INSERT INTO `sys_role_menu` VALUES ('750', '51', '1');
INSERT INTO `sys_role_menu` VALUES ('1064', '54', '53');
INSERT INTO `sys_role_menu` VALUES ('1095', '55', '2');
INSERT INTO `sys_role_menu` VALUES ('1096', '55', '6');
INSERT INTO `sys_role_menu` VALUES ('1097', '55', '7');
INSERT INTO `sys_role_menu` VALUES ('1098', '55', '3');
INSERT INTO `sys_role_menu` VALUES ('1099', '55', '50');
INSERT INTO `sys_role_menu` VALUES ('1100', '55', '49');
INSERT INTO `sys_role_menu` VALUES ('1101', '55', '1');
INSERT INTO `sys_role_menu` VALUES ('1856', '53', '28');
INSERT INTO `sys_role_menu` VALUES ('1857', '53', '29');
INSERT INTO `sys_role_menu` VALUES ('1858', '53', '30');
INSERT INTO `sys_role_menu` VALUES ('1859', '53', '27');
INSERT INTO `sys_role_menu` VALUES ('1860', '53', '57');
INSERT INTO `sys_role_menu` VALUES ('1861', '53', '71');
INSERT INTO `sys_role_menu` VALUES ('1862', '53', '48');
INSERT INTO `sys_role_menu` VALUES ('1863', '53', '72');
INSERT INTO `sys_role_menu` VALUES ('1864', '53', '1');
INSERT INTO `sys_role_menu` VALUES ('1865', '53', '7');
INSERT INTO `sys_role_menu` VALUES ('1866', '53', '55');
INSERT INTO `sys_role_menu` VALUES ('1867', '53', '56');
INSERT INTO `sys_role_menu` VALUES ('1868', '53', '62');
INSERT INTO `sys_role_menu` VALUES ('1869', '53', '15');
INSERT INTO `sys_role_menu` VALUES ('1870', '53', '2');
INSERT INTO `sys_role_menu` VALUES ('1871', '53', '61');
INSERT INTO `sys_role_menu` VALUES ('1872', '53', '20');
INSERT INTO `sys_role_menu` VALUES ('1873', '53', '21');
INSERT INTO `sys_role_menu` VALUES ('1874', '53', '22');
INSERT INTO `sys_role_menu` VALUES ('2084', '56', '68');
INSERT INTO `sys_role_menu` VALUES ('2085', '56', '60');
INSERT INTO `sys_role_menu` VALUES ('2086', '56', '59');
INSERT INTO `sys_role_menu` VALUES ('2087', '56', '58');
INSERT INTO `sys_role_menu` VALUES ('2088', '56', '51');
INSERT INTO `sys_role_menu` VALUES ('2089', '56', '50');
INSERT INTO `sys_role_menu` VALUES ('2090', '56', '49');
INSERT INTO `sys_role_menu` VALUES ('2243', '48', '72');
INSERT INTO `sys_role_menu` VALUES ('2247', '63', '-1');
INSERT INTO `sys_role_menu` VALUES ('2248', '63', '84');
INSERT INTO `sys_role_menu` VALUES ('2249', '63', '85');
INSERT INTO `sys_role_menu` VALUES ('2250', '63', '88');
INSERT INTO `sys_role_menu` VALUES ('2251', '63', '87');
INSERT INTO `sys_role_menu` VALUES ('2252', '64', '84');
INSERT INTO `sys_role_menu` VALUES ('2253', '64', '89');
INSERT INTO `sys_role_menu` VALUES ('2254', '64', '88');
INSERT INTO `sys_role_menu` VALUES ('2255', '64', '87');
INSERT INTO `sys_role_menu` VALUES ('2256', '64', '86');
INSERT INTO `sys_role_menu` VALUES ('2257', '64', '85');
INSERT INTO `sys_role_menu` VALUES ('2258', '65', '89');
INSERT INTO `sys_role_menu` VALUES ('2259', '65', '88');
INSERT INTO `sys_role_menu` VALUES ('2260', '65', '86');
INSERT INTO `sys_role_menu` VALUES ('2262', '67', '48');
INSERT INTO `sys_role_menu` VALUES ('2263', '68', '88');
INSERT INTO `sys_role_menu` VALUES ('2264', '68', '87');
INSERT INTO `sys_role_menu` VALUES ('2265', '69', '89');
INSERT INTO `sys_role_menu` VALUES ('2266', '69', '88');
INSERT INTO `sys_role_menu` VALUES ('2267', '69', '86');
INSERT INTO `sys_role_menu` VALUES ('2268', '69', '87');
INSERT INTO `sys_role_menu` VALUES ('2269', '69', '85');
INSERT INTO `sys_role_menu` VALUES ('2270', '69', '84');
INSERT INTO `sys_role_menu` VALUES ('2271', '70', '85');
INSERT INTO `sys_role_menu` VALUES ('2272', '70', '89');
INSERT INTO `sys_role_menu` VALUES ('2273', '70', '88');
INSERT INTO `sys_role_menu` VALUES ('2274', '70', '87');
INSERT INTO `sys_role_menu` VALUES ('2275', '70', '86');
INSERT INTO `sys_role_menu` VALUES ('2276', '70', '84');
INSERT INTO `sys_role_menu` VALUES ('2277', '71', '87');
INSERT INTO `sys_role_menu` VALUES ('2278', '72', '59');
INSERT INTO `sys_role_menu` VALUES ('2279', '73', '48');
INSERT INTO `sys_role_menu` VALUES ('2280', '74', '88');
INSERT INTO `sys_role_menu` VALUES ('2281', '74', '87');
INSERT INTO `sys_role_menu` VALUES ('2282', '75', '88');
INSERT INTO `sys_role_menu` VALUES ('2283', '75', '87');
INSERT INTO `sys_role_menu` VALUES ('2284', '76', '85');
INSERT INTO `sys_role_menu` VALUES ('2285', '76', '89');
INSERT INTO `sys_role_menu` VALUES ('2286', '76', '88');
INSERT INTO `sys_role_menu` VALUES ('2287', '76', '87');
INSERT INTO `sys_role_menu` VALUES ('2288', '76', '86');
INSERT INTO `sys_role_menu` VALUES ('2289', '76', '84');
INSERT INTO `sys_role_menu` VALUES ('2292', '78', '88');
INSERT INTO `sys_role_menu` VALUES ('2293', '78', '87');
INSERT INTO `sys_role_menu` VALUES ('2294', '78', null);
INSERT INTO `sys_role_menu` VALUES ('2295', '78', null);
INSERT INTO `sys_role_menu` VALUES ('2296', '78', null);
INSERT INTO `sys_role_menu` VALUES ('2308', '80', '87');
INSERT INTO `sys_role_menu` VALUES ('2309', '80', '86');
INSERT INTO `sys_role_menu` VALUES ('2310', '80', '-1');
INSERT INTO `sys_role_menu` VALUES ('2311', '80', '84');
INSERT INTO `sys_role_menu` VALUES ('2312', '80', '85');
INSERT INTO `sys_role_menu` VALUES ('2328', '79', '72');
INSERT INTO `sys_role_menu` VALUES ('2329', '79', '48');
INSERT INTO `sys_role_menu` VALUES ('2330', '79', '77');
INSERT INTO `sys_role_menu` VALUES ('2331', '79', '84');
INSERT INTO `sys_role_menu` VALUES ('2332', '79', '89');
INSERT INTO `sys_role_menu` VALUES ('2333', '79', '88');
INSERT INTO `sys_role_menu` VALUES ('2334', '79', '87');
INSERT INTO `sys_role_menu` VALUES ('2335', '79', '86');
INSERT INTO `sys_role_menu` VALUES ('2336', '79', '85');
INSERT INTO `sys_role_menu` VALUES ('2337', '79', '-1');
INSERT INTO `sys_role_menu` VALUES ('2338', '77', '89');
INSERT INTO `sys_role_menu` VALUES ('2339', '77', '88');
INSERT INTO `sys_role_menu` VALUES ('2340', '77', '87');
INSERT INTO `sys_role_menu` VALUES ('2341', '77', '86');
INSERT INTO `sys_role_menu` VALUES ('2342', '77', '85');
INSERT INTO `sys_role_menu` VALUES ('2343', '77', '84');
INSERT INTO `sys_role_menu` VALUES ('2344', '77', '72');
INSERT INTO `sys_role_menu` VALUES ('2345', '77', '-1');
INSERT INTO `sys_role_menu` VALUES ('2346', '77', '77');
INSERT INTO `sys_role_menu` VALUES ('2911', '1', '98');
INSERT INTO `sys_role_menu` VALUES ('2912', '1', '100');
INSERT INTO `sys_role_menu` VALUES ('2913', '1', '99');
INSERT INTO `sys_role_menu` VALUES ('2914', '1', '95');
INSERT INTO `sys_role_menu` VALUES ('2915', '1', '92');
INSERT INTO `sys_role_menu` VALUES ('2916', '1', '57');
INSERT INTO `sys_role_menu` VALUES ('2917', '1', '30');
INSERT INTO `sys_role_menu` VALUES ('2918', '1', '29');
INSERT INTO `sys_role_menu` VALUES ('2919', '1', '28');
INSERT INTO `sys_role_menu` VALUES ('2920', '1', '90');
INSERT INTO `sys_role_menu` VALUES ('2921', '1', '89');
INSERT INTO `sys_role_menu` VALUES ('2922', '1', '88');
INSERT INTO `sys_role_menu` VALUES ('2923', '1', '87');
INSERT INTO `sys_role_menu` VALUES ('2924', '1', '86');
INSERT INTO `sys_role_menu` VALUES ('2925', '1', '72');
INSERT INTO `sys_role_menu` VALUES ('2926', '1', '48');
INSERT INTO `sys_role_menu` VALUES ('2927', '1', '68');
INSERT INTO `sys_role_menu` VALUES ('2928', '1', '60');
INSERT INTO `sys_role_menu` VALUES ('2929', '1', '59');
INSERT INTO `sys_role_menu` VALUES ('2930', '1', '58');
INSERT INTO `sys_role_menu` VALUES ('2931', '1', '51');
INSERT INTO `sys_role_menu` VALUES ('2932', '1', '76');
INSERT INTO `sys_role_menu` VALUES ('2933', '1', '75');
INSERT INTO `sys_role_menu` VALUES ('2934', '1', '74');
INSERT INTO `sys_role_menu` VALUES ('2935', '1', '62');
INSERT INTO `sys_role_menu` VALUES ('2936', '1', '56');
INSERT INTO `sys_role_menu` VALUES ('2937', '1', '55');
INSERT INTO `sys_role_menu` VALUES ('2938', '1', '15');
INSERT INTO `sys_role_menu` VALUES ('2939', '1', '26');
INSERT INTO `sys_role_menu` VALUES ('2940', '1', '25');
INSERT INTO `sys_role_menu` VALUES ('2941', '1', '24');
INSERT INTO `sys_role_menu` VALUES ('2942', '1', '14');
INSERT INTO `sys_role_menu` VALUES ('2943', '1', '13');
INSERT INTO `sys_role_menu` VALUES ('2944', '1', '12');
INSERT INTO `sys_role_menu` VALUES ('2945', '1', '61');
INSERT INTO `sys_role_menu` VALUES ('2946', '1', '22');
INSERT INTO `sys_role_menu` VALUES ('2947', '1', '21');
INSERT INTO `sys_role_menu` VALUES ('2948', '1', '20');
INSERT INTO `sys_role_menu` VALUES ('2949', '1', '83');
INSERT INTO `sys_role_menu` VALUES ('2950', '1', '81');
INSERT INTO `sys_role_menu` VALUES ('2951', '1', '80');
INSERT INTO `sys_role_menu` VALUES ('2952', '1', '79');
INSERT INTO `sys_role_menu` VALUES ('2953', '1', '71');
INSERT INTO `sys_role_menu` VALUES ('2954', '1', '97');
INSERT INTO `sys_role_menu` VALUES ('2955', '1', '96');
INSERT INTO `sys_role_menu` VALUES ('2956', '1', '94');
INSERT INTO `sys_role_menu` VALUES ('2957', '1', '27');
INSERT INTO `sys_role_menu` VALUES ('2958', '1', '91');
INSERT INTO `sys_role_menu` VALUES ('2959', '1', '85');
INSERT INTO `sys_role_menu` VALUES ('2960', '1', '84');
INSERT INTO `sys_role_menu` VALUES ('2961', '1', '77');
INSERT INTO `sys_role_menu` VALUES ('2962', '1', '50');
INSERT INTO `sys_role_menu` VALUES ('2963', '1', '49');
INSERT INTO `sys_role_menu` VALUES ('2964', '1', '73');
INSERT INTO `sys_role_menu` VALUES ('2965', '1', '7');
INSERT INTO `sys_role_menu` VALUES ('2966', '1', '6');
INSERT INTO `sys_role_menu` VALUES ('2967', '1', '2');
INSERT INTO `sys_role_menu` VALUES ('2968', '1', '3');
INSERT INTO `sys_role_menu` VALUES ('2969', '1', '78');
INSERT INTO `sys_role_menu` VALUES ('2970', '1', '1');
INSERT INTO `sys_role_menu` VALUES ('2971', '1', '101');
INSERT INTO `sys_role_menu` VALUES ('2972', '1', '93');
INSERT INTO `sys_role_menu` VALUES ('2973', '1', '-1');
INSERT INTO `sys_role_menu` VALUES ('2974', '57', '93');
INSERT INTO `sys_role_menu` VALUES ('2975', '57', '99');
INSERT INTO `sys_role_menu` VALUES ('2976', '57', '95');
INSERT INTO `sys_role_menu` VALUES ('2977', '57', '101');
INSERT INTO `sys_role_menu` VALUES ('2978', '57', '96');
INSERT INTO `sys_role_menu` VALUES ('2979', '57', '94');
INSERT INTO `sys_role_menu` VALUES ('2980', '57', '-1');
INSERT INTO `sys_role_menu` VALUES ('2981', '58', '93');
INSERT INTO `sys_role_menu` VALUES ('2982', '58', '99');
INSERT INTO `sys_role_menu` VALUES ('2983', '58', '95');
INSERT INTO `sys_role_menu` VALUES ('2984', '58', '101');
INSERT INTO `sys_role_menu` VALUES ('2985', '58', '96');
INSERT INTO `sys_role_menu` VALUES ('2986', '58', '94');
INSERT INTO `sys_role_menu` VALUES ('2987', '58', '-1');

-- ----------------------------
-- Table structure for `sys_task`
-- ----------------------------
DROP TABLE IF EXISTS `sys_task`;
CREATE TABLE `sys_task` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `cron_expression` varchar(255) DEFAULT NULL COMMENT 'cron表達式',
  `method_name` varchar(255) DEFAULT NULL COMMENT '任務調用的方法名',
  `is_concurrent` varchar(255) DEFAULT NULL COMMENT '任務是否有狀態',
  `description` varchar(255) DEFAULT NULL COMMENT '任務描述',
  `update_by` varchar(64) DEFAULT NULL COMMENT '更新者',
  `bean_class` varchar(255) DEFAULT NULL COMMENT '任務執行時調用哪個類的方法 包名+類名',
  `create_date` datetime DEFAULT NULL COMMENT '創建時間',
  `job_status` varchar(255) DEFAULT NULL COMMENT '任務狀態',
  `job_group` varchar(255) DEFAULT NULL COMMENT '任務分組',
  `update_date` datetime DEFAULT NULL COMMENT '更新時間',
  `create_by` varchar(64) DEFAULT NULL COMMENT '創建者',
  `spring_bean` varchar(255) DEFAULT NULL COMMENT 'Spring bean',
  `job_name` varchar(255) DEFAULT NULL COMMENT '任務名',
  PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=8 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sys_task
-- ----------------------------
INSERT INTO `sys_task` VALUES ('2', '0/10 * * * * ?', 'run1', '1', '', '4028ea815a3d2a8c015a3d2f8d2a0002', 'com.bootdo.common.task.WelcomeJob', '2017-05-19 18:30:56', '0', 'group1', '2017-05-19 18:31:07', null, '', 'welcomJob');

-- ----------------------------
-- Table structure for `sys_user`
-- ----------------------------
DROP TABLE IF EXISTS `sys_user`;
CREATE TABLE `sys_user` (
  `user_id` bigint(20) NOT NULL AUTO_INCREMENT,
  `username` varchar(50) DEFAULT NULL COMMENT '用戶名',
  `name` varchar(100) DEFAULT NULL,
  `password` varchar(50) DEFAULT NULL COMMENT '密碼',
  `dept_id` bigint(20) DEFAULT NULL,
  `email` varchar(100) DEFAULT NULL COMMENT '郵箱',
  `mobile` varchar(100) DEFAULT NULL COMMENT '手機號',
  `status` tinyint(255) DEFAULT NULL COMMENT '狀態 0:禁用,1:正常',
  `user_id_create` bigint(255) DEFAULT NULL COMMENT '創建用戶id',
  `gmt_create` datetime DEFAULT NULL COMMENT '創建時間',
  `gmt_modified` datetime DEFAULT NULL COMMENT '修改時間',
  `sex` bigint(32) DEFAULT NULL COMMENT '性別',
  `birth` datetime DEFAULT NULL COMMENT '出身日期',
  `pic_id` bigint(32) DEFAULT NULL,
  `live_address` varchar(500) DEFAULT NULL COMMENT '現居住地',
  `hobby` varchar(255) DEFAULT NULL COMMENT '愛好',
  `province` varchar(255) DEFAULT NULL COMMENT '省份',
  `city` varchar(255) DEFAULT NULL COMMENT '所在城市',
  `district` varchar(255) DEFAULT NULL COMMENT '所在地區',
  PRIMARY KEY (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=138 DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sys_user
-- ----------------------------
INSERT INTO `sys_user` VALUES ('1', 'admin', '超級管理員', '27bd386e70f280e24c2f4f2a549b82cf', '6', '[email protected]', '17699999999', '1', '1', '2017-08-15 21:40:39', '2017-08-15 21:41:00', '96', '2017-12-14 00:00:00', '138', 'ccc', '121;', '北京市', '北京市市轄區', '東城區');
INSERT INTO `sys_user` VALUES ('2', 'test', '臨時用戶', '6cf3bb3deba2aadbd41ec9a22511084e', '6', '[email protected]', null, '1', '1', '2017-08-14 13:43:05', '2017-08-14 21:15:36', null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('36', 'ldh', '劉德華', 'bfd9394475754fbe45866eba97738c36', '7', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('123', 'zxy', '張學友', '35174ba93f5fe7267f1fb3c1bf903781', '6', 'zxy@bootdo', null, '0', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('124', 'wyf', '吳亦凡', 'e179e6f687bbd57b9d7efc4746c8090a', '6', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('130', 'lh', '鹿晗', '7924710cd673f68967cde70e188bb097', '9', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('131', 'lhc', '令狐沖', 'd515538e17ecb570ba40344b5618f5d4', '6', '[email protected]', null, '0', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('132', 'lyf', '劉亦菲', '7fdb1d9008f45950c1620ba0864e5fbd', '13', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('134', 'lyh', '李彥宏', 'dc26092b3244d9d432863f2738180e19', '8', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('135', 'wjl', '王健林', '3967697dfced162cf6a34080259b83aa', '6', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('136', 'gdg', '郭德綱', '3bb1bda86bc02bf6478cd91e42135d2f', '9', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);
INSERT INTO `sys_user` VALUES ('137', 'test2', '測試用戶2', '649169898e69272c0e5bc899baf1e904', '12', '[email protected]', null, '1', null, null, null, null, null, null, null, null, null, null, null);

-- ----------------------------
-- Table structure for `sys_user_plus`
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_plus`;
CREATE TABLE `sys_user_plus` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) NOT NULL,
  `payment` double DEFAULT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- ----------------------------
-- Records of sys_user_plus
-- ----------------------------

-- ----------------------------
-- Table structure for `sys_user_role`
-- ----------------------------
DROP TABLE IF EXISTS `sys_user_role`;
CREATE TABLE `sys_user_role` (
  `id` bigint(20) NOT NULL AUTO_INCREMENT,
  `user_id` bigint(20) DEFAULT NULL COMMENT '用戶ID',
  `role_id` bigint(20) DEFAULT NULL COMMENT '角色ID',
  PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=134 DEFAULT CHARSET=utf8 COMMENT='用戶與角色對應關係';

-- ----------------------------
-- Records of sys_user_role
-- ----------------------------
INSERT INTO `sys_user_role` VALUES ('73', '30', '48');
INSERT INTO `sys_user_role` VALUES ('74', '30', '49');
INSERT INTO `sys_user_role` VALUES ('75', '30', '50');
INSERT INTO `sys_user_role` VALUES ('76', '31', '48');
INSERT INTO `sys_user_role` VALUES ('77', '31', '49');
INSERT INTO `sys_user_role` VALUES ('78', '31', '52');
INSERT INTO `sys_user_role` VALUES ('79', '32', '48');
INSERT INTO `sys_user_role` VALUES ('80', '32', '49');
INSERT INTO `sys_user_role` VALUES ('81', '32', '50');
INSERT INTO `sys_user_role` VALUES ('82', '32', '51');
INSERT INTO `sys_user_role` VALUES ('83', '32', '52');
INSERT INTO `sys_user_role` VALUES ('84', '33', '38');
INSERT INTO `sys_user_role` VALUES ('85', '33', '49');
INSERT INTO `sys_user_role` VALUES ('86', '33', '52');
INSERT INTO `sys_user_role` VALUES ('87', '34', '50');
INSERT INTO `sys_user_role` VALUES ('88', '34', '51');
INSERT INTO `sys_user_role` VALUES ('89', '34', '52');
INSERT INTO `sys_user_role` VALUES ('106', '124', '1');
INSERT INTO `sys_user_role` VALUES ('110', '1', '1');
INSERT INTO `sys_user_role` VALUES ('111', '2', '1');
INSERT INTO `sys_user_role` VALUES ('113', '131', '48');
INSERT INTO `sys_user_role` VALUES ('117', '135', '1');
INSERT INTO `sys_user_role` VALUES ('120', '134', '1');
INSERT INTO `sys_user_role` VALUES ('121', '134', '48');
INSERT INTO `sys_user_role` VALUES ('123', '130', '1');
INSERT INTO `sys_user_role` VALUES ('124', null, '48');
INSERT INTO `sys_user_role` VALUES ('125', '132', '52');
INSERT INTO `sys_user_role` VALUES ('126', '132', '49');
INSERT INTO `sys_user_role` VALUES ('127', '123', '48');
INSERT INTO `sys_user_role` VALUES ('132', '36', '48');
INSERT INTO `sys_user_role` VALUES ('133', '137', '56');
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章