1 Star 2 Fork 1

阿尔法哲/aefz-blog

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
wkblog.sql 46.62 KB
一键复制 编辑 原始数据 按行查看 历史
阿尔法哲 提交于 2020-10-17 02:16 . 优化页面
/*
Navicat Premium Data Transfer
Source Server : Localhost
Source Server Type : MySQL
Source Server Version : 50730
Source Host : localhost:3306
Source Schema : wkblog
Target Server Type : MySQL
Target Server Version : 50730
File Encoding : 65001
Date: 17/10/2020 02:15:09
*/
SET NAMES utf8mb4;
SET FOREIGN_KEY_CHECKS = 0;
-- ----------------------------
-- Table structure for account
-- ----------------------------
DROP TABLE IF EXISTS `account`;
CREATE TABLE `account` (
`aid` int(11) NOT NULL AUTO_INCREMENT COMMENT '账户id',
`aaccount` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '账户 唯一',
`aemail` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮箱',
`apassword` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '密码',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`aid`) USING BTREE,
UNIQUE INDEX `aaccount`(`aaccount`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '账户表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of account
-- ----------------------------
INSERT INTO `account` VALUES (4, '2568425312', '[email protected]', '6215c754146316d371f6a5c041bf024a', '2020-08-10 13:05:20', '2020-08-10 13:05:20');
INSERT INTO `account` VALUES (5, '7894561230', '[email protected]', '79d3a339cdf3e950f618bc3cd0455b4e', '2020-08-21 12:22:27', '2020-08-21 12:22:27');
-- ----------------------------
-- Table structure for account_role
-- ----------------------------
DROP TABLE IF EXISTS `account_role`;
CREATE TABLE `account_role` (
`arid` int(11) NOT NULL AUTO_INCREMENT COMMENT '账号角色中间表id',
`rid` int(11) NOT NULL COMMENT '账户id',
`aid` int(11) NOT NULL COMMENT '角色id',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`arid`) USING BTREE,
INDEX `FK_Reference_1`(`aid`) USING BTREE,
INDEX `FK_Reference_2`(`rid`) USING BTREE,
CONSTRAINT `FK_Reference_1` FOREIGN KEY (`aid`) REFERENCES `account` (`aid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `FK_Reference_2` FOREIGN KEY (`rid`) REFERENCES `role` (`rid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 3 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '账户角色中间表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of account_role
-- ----------------------------
INSERT INTO `account_role` VALUES (1, 3, 4, '2020-08-10 13:05:21', '2020-08-10 13:05:21');
INSERT INTO `account_role` VALUES (2, 3, 5, '2020-08-21 12:22:27', '2020-08-21 12:22:27');
-- ----------------------------
-- Table structure for classify
-- ----------------------------
DROP TABLE IF EXISTS `classify`;
CREATE TABLE `classify` (
`cid` int(11) NOT NULL AUTO_INCREMENT COMMENT '网站分类图片路径和',
`cname` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称',
`cdescribe` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '描述',
`curl` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '网站分类图片路径',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '网站分类表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of classify
-- ----------------------------
INSERT INTO `classify` VALUES (1, '前端', '最新前端相关文章', '/images/index/js.png', '2020-07-19 20:22:03', '2020-07-19 20:22:10');
INSERT INTO `classify` VALUES (2, '后端', '最新后端相关文章', '/images/index/after.png', '2020-07-19 20:23:25', '2020-07-19 20:23:29');
INSERT INTO `classify` VALUES (3, '小程序', '最新前端相关文章', '/images/index/xcx.png', '2020-07-19 20:24:12', '2020-07-19 20:24:16');
INSERT INTO `classify` VALUES (4, 'iOS', '最新iOS相关文章', '/images/index/apple.png', '2020-07-19 20:29:44', '2020-07-19 20:29:49');
INSERT INTO `classify` VALUES (5, 'Android', '最新Android相关文章', '/images/index/android.png', '2020-07-19 20:30:20', '2020-07-19 20:30:23');
-- ----------------------------
-- Table structure for collect
-- ----------------------------
DROP TABLE IF EXISTS `collect`;
CREATE TABLE `collect` (
`scid` int(11) NOT NULL AUTO_INCREMENT COMMENT '收藏主键,自增',
`aid` int(11) NOT NULL COMMENT '收藏账号id,唯一',
`eid` int(11) NOT NULL COMMENT '博客id',
`scstatus` int(1) NOT NULL DEFAULT 0 COMMENT '状态:0已收藏 1:未收藏',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`scid`) USING BTREE,
UNIQUE INDEX `aid`(`aid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_bin COMMENT = '收藏表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of collect
-- ----------------------------
-- ----------------------------
-- Table structure for comment
-- ----------------------------
DROP TABLE IF EXISTS `comment`;
CREATE TABLE `comment` (
`cmid` int(11) NOT NULL AUTO_INCREMENT COMMENT '评论id',
`cmcomment` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容',
`eid` int(11) NOT NULL COMMENT '博客id',
`aid` int(11) NOT NULL COMMENT '账户id',
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`cmid`) USING BTREE,
INDEX `FK_Reference_8`(`eid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '评论表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of comment
-- ----------------------------
INSERT INTO `comment` VALUES (1, '多谢大牛指点!', 2, 4, '2020-08-21 11:01:56', '2020-08-21 11:01:56');
INSERT INTO `comment` VALUES (2, '感谢!', 2, 5, '2020-08-28 00:16:00', '2020-08-28 00:16:00');
INSERT INTO `comment` VALUES (3, '感谢大佬的分享。', 5, 4, '2020-08-28 00:24:55', '2020-08-28 00:24:55');
INSERT INTO `comment` VALUES (4, '感谢大牛的收集!', 6, 4, '2020-10-17 02:10:10', '2020-10-17 02:10:10');
-- ----------------------------
-- Table structure for essay
-- ----------------------------
DROP TABLE IF EXISTS `essay`;
CREATE TABLE `essay` (
`eid` int(11) NOT NULL AUTO_INCREMENT COMMENT '博客id',
`etitle` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '标题',
`eessay` text CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '内容',
`eimages` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '图片',
`estate` int(2) NOT NULL COMMENT '0原创1转载',
`estatus` int(1) NOT NULL DEFAULT 0 COMMENT '状态:0公开1私密',
`e_read_statis` int(11) NOT NULL DEFAULT 0 COMMENT '阅读量统计',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
`dedid` int(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
`aid` int(11) NOT NULL COMMENT '关联账户',
PRIMARY KEY (`eid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '文章表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of essay
-- ----------------------------
INSERT INTO `essay` VALUES (2, 'SpringBoot+Shiro认证', '<h1>一、引入相关依赖</h1><p><span style=\"font-weight: bold;\">我也不清楚</span></p>', NULL, 0, 0, 111, '2020-08-17 12:12:55', '2020-10-17 02:05:41', 0, 4);
INSERT INTO `essay` VALUES (3, 'ElasticSeach', '<h1><span style=\"font-weight: bold;\">你好</span></h1>', NULL, 0, 0, 3, '2020-08-17 13:17:36', '2020-08-28 22:52:29', 0, 4);
INSERT INTO `essay` VALUES (4, 'Form登录', '<h1><span style=\"font-weight: bold;\">你还好吗</span></h1>', NULL, 0, 0, 4, '2020-08-17 13:38:41', '2020-09-20 20:29:22', 0, 4);
INSERT INTO `essay` VALUES (5, 'Spring 基于 XML 的 AOP', '<h2><span style=\"font-weight: bold;\">1.1 简介</span></h2><h3><span style=\"font-weight: bold;\"><a name=\"t1\"></a><a name=\"t1\"></a><a id=\"111__1\"></a>1.1.1 概述</span></h3><p>  AOP 为 Aspect Oriented Programming 的缩写,意思为面向切面编程,是通过预编译方式和运行期动态代理实现程序功能的统一维护的一种技术。AOP 是 OOP 的延续,是软件开发中的一个热点,也是 Spring 框架中的一个重要内容,是函数式编程的一种衍生范型。利用 AOP 可以对业务逻辑的各个部分进行隔离,从而使得业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。<br>   AOP 是 Spring 框架的关键组件之一。虽然 Spring IoC 容器不依赖于 AOP,但在 Spring 应用中,经常会使用 AOP 来简化编程。在 Spring 框架中使用 AOP 主要有以下优势:<br> ♞ 提供声明式企业服务,特别是作为 EJB 声明式服务的替代品。最重要的是,这种服务是声明式事务管理。<br> ♞ 允许用户实现自定义切面。在某些不适合用 OOP 编程的场景中,采用 AOP 来补充。<br> ♞ 可以对业务逻辑的各个部分进行隔离,从而使业务逻辑各部分之间的耦合度降低,提高程序的可重用性,同时提高了开发的效率。<br><font color=\"#20B2AA\">要使用 Spring AOP 需要添加 spring-aop 模块。</font></p><p><br></p><h3><span style=\"font-weight: bold;\"><a name=\"t2\"></a><a name=\"t2\"></a><a id=\"112_AOP__11\"></a>1.1.2 AOP 核心概念</span></h3><p> ♞&nbsp;<code>Join Point(连接点)</code>:连接点是指那些被拦截到的点。在 Spring 中,这些点指的是方法,因为 Spring 只支持方法类型的连接点<br> ♞&nbsp;<code>Advice(通知)</code>:通知是指拦截到 Join Point 之后所要做的事情就是通知,通知有各种类型,其中包括 around、before 和 after 等通知。许多 AOP 框架,包括 Spring,都是以拦截器来实现通知模型的,并维护一个以连接点为中心的拦截器链。<br> ♞&nbsp;<code>Pointcut(切入点)</code>:切入点是指我们要对哪些 Join Point 进行拦截的定义。通知和一个切入点表达式关联,并在满足这个切人点的连接点上运行(如当执行某个特定名称的方法时)。切入点表达式如何和连接点匹配是 AOP 的核心。Spring 默认使用 AspectJ 切入点语法。<br> ♞&nbsp;<code>Aspect(切面)</code>:是切入点和通知的结合<br> ♞&nbsp;<code>Introduction(引入)</code>:声明额外的方法或某个类型的字段。Spring 允许引入新的接口(及一个对应的实现)到任何被通知的对象。例如,可以使用一个引入来使 Bean 实现 IsModified 接口,以便简化缓存机制。在 AspectJ 社区,Introduction 也被称为 Inter-type Declaration(内部类型声明)。<br> ♞&nbsp;<code>Target Object(目标对象)</code>:被一个或多个切面所通知的对象。也有人把它称为 Advised(被通知)对象。既然 Spring AOP 是通过运行时代理实现的,那这个对象永远是一个 Proxied(被代理)对象。<br> ♞&nbsp;<code>AOP Proxy(AOP代理)</code>:AOP 框架创建的对象,用来实现 Aspect Contract(切面契约)包括通知方法执行等功能。在 Spring 中,AOP 代理可以是 JDK 动态代理或 CGLIB 代理。<br> ♞&nbsp;<code>Weaving(织入)</code>:把切面应用到目标对象来创建新的代理对象的过程。Spring 采用动态代理织入,而 AspectJ 采用编译期织入和类装载期织入</p><p>  Spring AOP 用纯 Java 实现,它不需要专门的编译过程。Spring AOP 不需要控制类装载器层次,因此它适用于 Servlet 容器或应用服务器。Spring 目前仅支持方法调用作为连接点之用。虽然可以在不影响 Spring AOP 核心 API 的情况下加入对成员变量拦截器的支持,但 Spring 并没有实现成员变量拦截器。Spring 与其他纯 Java AOP 框架一样,在运行时完成织入。其中有关 Advice(通知)的类型主要有以下几种:<br> ♞&nbsp;<code>Before Advice(前置通知)</code>:在某连接点之前执行的通知,但这个通知不能阻止连接点前的执行,除非它抛出一个异常。<br> ♞&nbsp;<code>After Returning Advice(返回后通知)</code>:在某连接点正常完成后执行的通知,如果一个方法没有抛出异常,将正常返回。<br> ♞&nbsp;<code>After Throwing Advice(抛出异常后通知)</code>:在方法抛出异常退出时执行的通知。<br> ♞&nbsp;<code>After Finally Advice(最后通知)</code>:当某连接点退出时执行的通知,不论是正常返回还是异常退出。<br> ♞&nbsp;<code>Around Advice(环绕通知)</code>:环绕一个连接点的通知。这是最强大的一种通知类型。环绕通知可以在方法调用前后完成自定义的行为,它也会选择是否继续执行连接点,或者直接返回它们自己的返回值或抛出异常来结束执行。</p><p><br></p><h3><span style=\"font-weight: bold;\"><a name=\"t3\"></a><a name=\"t3\"></a><a id=\"113_AOP__30\"></a>1.1.3 AOP 动态代理技术</span></h3><p>[☞ Spring AOP 的动态代理技术]</p>', NULL, 0, 0, 12, '2020-08-21 12:37:57', '2020-10-02 20:22:43', 0, 5);
INSERT INTO `essay` VALUES (6, 'Java基础知识点总结', '<h2><strong>前言</strong></h2><p>本文主要是我之前复习Java基础原理过程中写的Java基础知识点总结。Java的知识点其实非常多,并且有些知识点比较难以理解,有时候我们自以为理解了某些内容,其实可能只是停留在表面上,没有理解其底层实现原理。</p><p>&nbsp;</p><p>纸上得来终觉浅,绝知此事要躬行。笔者之前对每部分的内容对做了比较深入的学习以及代码实现,基本上比较全面地讲述了每一个Java基础知识点,当然可能有些遗漏和错误,欢迎读者指正。</p><h2><a name=\"t1\"></a><a name=\"t1\"></a>&nbsp;</h2><h2><a name=\"t2\"></a><a name=\"t2\"></a><strong>Java基础知识点总结</strong></h2><p>每部分内容会重点写一些常见知识点,方便复习和记忆,但并不是全部内容。</p><h3><a name=\"t3\"></a><a name=\"t3\"></a>面向对象三大特性</h3><blockquote><p>继承:一般类只能单继承,内部类实现多继承,接口可以多继承</p><p>封装:访问权限控制public &gt; protected &gt; 包 &gt; private 内部类也是一种封装</p><p>多态:编译时多态,体现在向上转型和向下转型,通过引用类型判断调用哪个方法(静态分派)。</p><p>运行时多态,体现在同名函数通过不同参数实现多种方法(动态分派)。</p></blockquote><h3><a name=\"t4\"></a><a name=\"t4\"></a>基本数据类型</h3><blockquote><p>1. 基本类型位数,自动装箱,常量池。</p><p>2. 例如byte类型是1byte也就是8位,可以表示的数字是-128到127,因为还有一个0,加起来一共是256,也就是2的八次方。</p><p>32位和64位机器的int是4个字节也就是32位,char是1个字节就是8位,float是4个字节,double是8个字节,long是8个字节。</p><p>3. 基本数据类型的包装类只在数字范围-128到127中用到常量池,会自动拆箱装箱,其余数字范围的包装类则会新建实例。</p></blockquote><h3><a name=\"t5\"></a><a name=\"t5\"></a>String及包装类</h3><blockquote><p>1. String类型是final类型,在堆中分配空间后内存地址不可变。</p><p>2. 底层是final修饰的char[]数组,数组的内存地址同样不可变。</p><p>但实际上可以通过修改char[n] = \'a\'来进行修改,不会改变String实例的内存值,不过在jdk中,用户无法直接获取char[],也没有方法能操作该数组。</p><p>所以String类型的不可变实际上也是理论上的不可变。所以我们在分配String对象以后,如果将其 = \"abc\",那也只是改变了引用的指向,实际上没有改变原来的对象。</p><p>3. StringBuffer和StringBuilder底层是可变的char[]数组,继承父类AbstractStringBuilder的各种成员和方法,实际上的操作都是由父类方法来完成的。</p></blockquote><h3><a name=\"t6\"></a><a name=\"t6\"></a>final关键字</h3><blockquote><p>1. final修饰基本数据类型保证不可变</p><p>2. final修饰引用保证引用不能指向别的对象,否则会报错。</p><p>3. final修饰类,类的实例分配空间后地址不可变,子类不能重写所有父类方法。因此在cglib动态代理中,不能为一个类的final修饰的函数做代理,因为cglib要将被代理的类设置为父类,然后再生成字节码。</p><p>final修饰方法,子类不能重写该方法。</p></blockquote><h3><a name=\"t7\"></a><a name=\"t7\"></a>抽象类和接口</h3><blockquote><p>1. 抽象类可以有方法实现。 抽象类可以有非final成员变量。 抽象方法要用abstract修饰。 抽象类可以有构造方法,但是只能由子类进行实例化。</p><p>2. 接口可以用extends加多个接口实现多继承。 接口只能有public final类型的成员变量。 接口只能有抽象方法,不能有方法体、 接口不能实例化,但是可以作为引用类型。</p></blockquote><h3><a name=\"t8\"></a><a name=\"t8\"></a>代码块和加载顺序</h3><blockquote><p>假设该类是第一次进行实例化。那么有如下加载顺序 静态总是比非静态优先,从早到晚的顺序是: 1. 静态代码块 和 静态成员变量的顺序根据代码位置前后来决定。 2. 代码块和成员变量的顺序也根据代码位置来决定 3. 最后才调用构造方法构造方法</p></blockquote><h3><a name=\"t9\"></a><a name=\"t9\"></a>包、内部类、外部类</h3><blockquote><p>1. Java项目一般从src目录开始有com.<em>.</em>.A.java这样的目录结构。这就是包结构。所以一般编译后的结构是跟包结构一模一样的,这样的结构保证了import时能找到正确的class引用包访问权限就是指同包下的类可见。</p><p>import 一般加上全路径,并且使用.*时只包含当前目录的所有类文件,不包括子目录。</p><p>2. 外部类只有public和default两种修饰,要么全局可访问,要么包内可访问。</p><p>3. 内部类可以有全部访问权限,因为它的概念就是一个成员变量,所以访问权限设置与一般的成员变量相同。</p><p>非静态内部类是外部类的一个成员变量,只跟外部类的实例有关。</p><p>静态内部类是独立于外部类存在的一个类,与外部类实例无关,可以通过外部类.内部类直接获取Class类型。</p></blockquote><h3><a name=\"t10\"></a><a name=\"t10\"></a>异常</h3><blockquote><p>1. 异常体系的最上层是Throwable类 子类有Error和Exception Exception的子类又有RuntimeException和其他具体的可检查异常。</p><p>2. Error是jvm完全无法处理的系统错误,只能终止运行。</p><p>运行时异常指的是编译正确但运行错误的异常,如数组越界异常,一般是人为失误导致的,这种异常不用try catch,而是需要程序员自己检查。</p><p>可检查异常一般是jvm处理不了的一些异常,但是又经常会发生,比如Ioexception,Sqlexception等,是外部实现带来的异常。</p><p>3. 多线程的异常流程是独立的,互不影响。 大型模块的子模块异常一般需要重新封装成外部异常再次抛出,否则只能看到最外层异常信息,难以进行调试。</p><p>日志框架是异常报告的最好帮手,log4j,slf4j中,在工作中必不可少。</p></blockquote><h3><a name=\"t11\"></a><a name=\"t11\"></a>泛型</h3><blockquote><p>1. Java中的泛型是伪泛型,只在编译期生效,运行期自动进行泛型擦除,将泛型替换为实际上传入的类型。</p><p>泛型类用classA {</p><p>}</p><p>2. 这样的形式表示,里面的方法和成员变量都可以用T来表示类型。泛型接口也是类似的,不过泛型类实现泛型接口时可以选择注入实际类型或者是继续使用泛型。</p><p>3. 泛型方法可以自带泛型比如void &lt;E&gt; go();</p><p>泛型可以使用?通配符进行泛化 Object可以接受任何类型</p><p>也可以使用 这种方式进行上下边界的限制。</p></blockquote><h3><a name=\"t12\"></a><a name=\"t12\"></a>Class类和Object类</h3><blockquote><p>1. Java反射的基础是Class类,该类封装所有其他类的类型信息,并且在每个类加载后在堆区生成每个类的一个Class&lt;类名&gt;实例,用于该类的实例化。</p><p>2. Java中可以通过多种方式获取Class类型,比如A.class,new A().getClass()方法以及Class.forName(\"com.?.?.A\")方法。</p><p>3. Object是所有类的父类,有着自己的一些私有方法,以及被所有类继承的9大方法。</p><p>知乎上有人讨论Object和Class类型谁先加载谁后加载,因为每个类都要继承Object,但是又得先被加载到堆区,事实上,这个问题在JVM初始化时就解决了,没必要多想。</p></blockquote><h3><a name=\"t13\"></a><a name=\"t13\"></a>javac和java</h3><blockquote><p>1. javac 是编译一个java文件的基本命令,通过不同参数可以完成各种配置,比如导入其他类,指定编译路径等。</p><p>2. java是执行一个java文件的基本命令,通过参数配置可以以不同方式执行一个java程序或者是一个jar包。</p><p>3. javap是一个class文件的反编译程序,可以获取class文件的反编译结果,甚至是jvm执行程序的每一步代码实现。</p></blockquote><h3><a name=\"t14\"></a><a name=\"t14\"></a>反射</h3><blockquote><p>1. Java反射包reflection提供对Class,Method,field,constructor1 等信息的封装类型。</p><p>2. 通过这些api可以轻易获得一个类的各种信息并且可以进行实例化,方法调用等。</p><p>类中的private参数可以通过setaccessible方法强制获取。</p><p>3. 反射的作用可谓是博大精深,JDK动态代理生成代理类的字节码后,首先把这个类通过defineclass定义成一个类,然后用class.for(name)会把该类加载到jvm,之后我们就可以通过,A.class.GetMethod()获取其方法,然后通过invoke调用其方法,在调用这个方法时,实际上会通过被代理类的引用再去调用原方法。</p></blockquote><h3><a name=\"t15\"></a><a name=\"t15\"></a>枚举类</h3><blockquote><p>1. 枚举类继承Enum并且每个枚举类的实例都是唯一的。</p><p>2. 枚举类可以用于封装一组常量,取值从这组常量中取,比如一周的七天,一年的十二个月。</p><p>3. 枚举类的底层实现其实是语法糖,每个实例可以被转化成内部类。并且使用静态代码块进行初始化,同时保证内部成员变量不可变。</p></blockquote><h3><a name=\"t16\"></a><a name=\"t16\"></a>序列化</h3><blockquote><p>1. 序列化的类要实现serializable接口</p><p>transient修饰符可以保证某个成员变量不被序列化</p><p>readObject和writeOject来实现实例的写入和读取。</p><p>2. 事实上,一些拥有数组变量的类都会把数组设为transient修饰,这样的话不会对整个数组进行序列化,而是利用专门的方法将有数据的数组范围进行序列化,以便节省空间。</p></blockquote><h3><a name=\"t17\"></a><a name=\"t17\"></a>动态代理</h3><blockquote><p>1. jdk自带的动态代理可以代理一个已经实现接口的类。</p><p>2. cglib代理可以代理一个普通的类。</p><p>3. 动态代理的基本实现原理都是通过字节码框架动态生成字节码,并且在用defineclass加载类后,获取代理类的实例。</p><p>一般需要实现一个代理处理器,用来处理被代理类的前置操作和后置操作。在JDK动态代理中,这个类叫做invocationHandler。</p><p>4. JDK动态代理首先获取被代理类的方法,并且只获取在接口中声明的方法,生成代理类的字节码后,首先把这个类通过defineclass定义成一个类,然后把该类加载到jvm,之后我们就可以通过,A.class.GetMethod()获取其方法,然后通过invoke调用其方法,在调用这个方法时,实际上会通过被代理类的引用再去调用原方法。</p><p>5. 而对于cglib动态代理,一般会把被代理类设为代理类的父类,然后获取被代理类中所有非final的方法,通过asm字节码框架生成代理类的字节码,这个代理类很神奇,他会保留原来的方法以及代理后的方法,通过方法数组的形式保存。</p><p>cglib的动态代理需要实现一个enhancer和一个interceptor,在interceptor中配置我们需要的代理内容。如果没有配置interceptor,那么代理类会调用被代理类自己的方法,如果配置了interceptor,则会使用代理类修饰过的方法。</p></blockquote><h3><a name=\"t18\"></a><a name=\"t18\"></a>多线程</h3><blockquote><p>这里先不讲juc包里的多线程类。juc相关内容会在Java并发专题讲解。</p><p>1. 线程的实现可以通过继承Thread类和实现Runable接口 也可以使用线程池。callable配合future可以实现线程中的数据获取。</p><p>2. Java中的线程有7种状态,new runable running blocked waiting time<em>waiting terminate</em></p><p><em>blocked是线程等待其他线程锁释放。 waiting是wait以后线程无限等待其他线程使用notify唤醒 time</em>wating是有限时间地等待被唤醒,也可能是sleep固定时间。</p><p>3. Thread的join是实例方法,比如a.join(b),则说明a线程要等b线程运行完才会运行。</p><p>4. o.wait方法会让持有该对象o的线程释放锁并且进入阻塞状态,notify则是持有o锁对象的线程通知其他等待锁的线程获取锁。notify方法并不会释放锁。注意这两个方法都只能在synchronized同步方法或同步块里使用。</p><p>5. synchronized方法底层使用系统调用的mutex锁,开销较大,jvm会为每个锁对象维护一个等待队列,让等待该对象锁的线程在这个队列中等待。当线程获取不到锁时则让线程阻塞,而其他检查notify以后则会通知任意一个线程,所以这个锁时非公平锁。</p><p>6. Thread.sleep(),Thread.interrupt()等方法都是类方法,表示当前调用该方法的线程的操作。</p><p>一个线程实例连续start两次会抛异常,这是因为线程start后会设置标识,如果再次start则判断为错误。</p></blockquote><h3><a name=\"t19\"></a><a name=\"t19\"></a>IO流</h3><blockquote><p>1. IO流也是Java中比较重要的一块,Java中主要有字节流,字符流,文件等。其中文件也是通过流的方式打开,读取和写入的。</p><p>2. IO流的很多接口都使用了装饰者模式,即将原类型通过传入装饰类构造函数的方式,增强原类型,以此获得像带有缓冲区的字节流,或者将字节流封装成字符流等等,其中需要注意的是编码问题,后者打印出来的结果可能是乱码哦。</p><p>3. IO流与网络编程息息相关,一个socket接入后,我们可以获取它的输入流和输出流,以获取TCP数据包的内容,并且可以往数据报里写入内容,因为TCP协议也是按照流的方式进行传输的,实际上TCP会将这些数据进行分包处理,并且通过差错检验,超时重传,滑动窗口协议等方式,保证了TCP数据包的高效和可靠传输。</p></blockquote><h3><a name=\"t20\"></a><a name=\"t20\"></a>网络编程</h3><blockquote><p>承接IO流的内容</p><p>1. IO流与网络编程息息相关,一个socket接入后,我们可以获取它的输入流和输出流,以获取TCP数据包的内容,并且可以往数据报里写入内容,因为TCP协议也是按照流的方式进行传输的,实际上TCP会将这些数据进行分包处理,并且通过差错检验,超时重传,滑动窗口协议等方式,保证了TCP数据包的高效和可靠传输。</p><p>2. 除了使用socket来获取TCP数据包外,还可以使用UDP的DatagramPacket来封装UDP数据包,因为UDP数据包的大小是确定的,所以不是使用流方式处理,而是需要事先定义他的长度,源端口和目标端口等信息。</p><p>3. 为了方便网络编程,Java提供了一系列类型来支持网络编程的api,比如URL类,InetAddress类等。</p></blockquote><h3><a name=\"t21\"></a><a name=\"t21\"></a>Java8</h3><blockquote><blockquote><p>1. 接口中的默认方法,接口终于可以有方法实现了,使用注解即可标识出默认方法。</p><p>2. lambda表达式实现了函数式编程,通过注解可以声明一个函数式接口,该接口中只能有一个方法,这个方法正是使用lambda表达式时会调用到的接口。</p><p>3. Option类实现了非空检验</p><p>4. 各种api的更新,包括chm,hashmap的实现等</p><p>5. Stream流概念,实现了集合类的流式访问,可以基于此使用map和reduce并行计算。</p></blockquote></blockquote>', NULL, 0, 0, 5, '2020-10-17 02:08:44', '2020-10-17 02:10:25', 0, 4);
-- ----------------------------
-- Table structure for essay_classify
-- ----------------------------
DROP TABLE IF EXISTS `essay_classify`;
CREATE TABLE `essay_classify` (
`ecid` int(11) NOT NULL AUTO_INCREMENT COMMENT '博客分类id',
`eid` int(11) NOT NULL COMMENT '博客id',
`cid` int(11) NOT NULL COMMENT '网站分类id',
`bid` varchar(40) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '网站标签分类',
`sid` int(11) NOT NULL COMMENT '个人分类id',
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`ecid`) USING BTREE,
INDEX `1`(`eid`) USING BTREE,
INDEX `2`(`sid`) USING BTREE,
INDEX `3`(`cid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 7 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '文章分类中间表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of essay_classify
-- ----------------------------
INSERT INTO `essay_classify` VALUES (2, 2, 2, '15,16,17', 1, '2020-08-17 12:12:55', '2020-08-17 12:12:55');
INSERT INTO `essay_classify` VALUES (3, 3, 2, '2,10,11', 1, '2020-08-17 13:17:36', '2020-08-17 13:17:36');
INSERT INTO `essay_classify` VALUES (4, 4, 2, '3,11,12', 1, '2020-08-17 13:38:41', '2020-08-17 13:38:41');
INSERT INTO `essay_classify` VALUES (5, 5, 2, '2,10,17', 7, '2020-08-21 12:37:57', '2020-08-21 12:37:57');
INSERT INTO `essay_classify` VALUES (6, 6, 2, '9', 1, '2020-10-17 02:08:44', '2020-10-17 02:08:44');
-- ----------------------------
-- Table structure for label
-- ----------------------------
DROP TABLE IF EXISTS `label`;
CREATE TABLE `label` (
`bid` int(11) NOT NULL AUTO_INCREMENT COMMENT '主键',
`bname` varchar(25) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '标签名称',
`bdescribe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签描述',
`burl` varchar(200) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '标签百科详情',
`cid` int(11) NOT NULL COMMENT '关联分类id',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`bid`) USING BTREE,
INDEX `bcid`(`cid`) USING BTREE,
CONSTRAINT `bcid` FOREIGN KEY (`cid`) REFERENCES `classify` (`cid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 18 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '网站通用标签' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of label
-- ----------------------------
INSERT INTO `label` VALUES (1, 'html', '超文本标记语言(英文:HyperText Markup Language,HTML)是为“网页创建和其它可在网页浏览器中看到的信息”设计的一种标记语言。', '', 1, '2020-07-22 21:40:45', '2020-07-22 21:40:48');
INSERT INTO `label` VALUES (2, 'css', '层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表,由W3C定义和维护的标准,一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言。', NULL, 1, '2020-07-22 21:50:25', '2020-07-22 21:50:28');
INSERT INTO `label` VALUES (3, 'css3', '层叠样式表(英语:Cascading Style Sheets,简写CSS),又称串样式列表,由W3C定义和维护的标准,一种用来为结构化文档(如HTML文档或XML应用)添加样式(字体、间距和颜色等)的计算机语言。目前最新版本是CSS2.1,为W3C的候选推荐标准。CSS3现在已被大部分现代浏览器支持,而下一版的CSS4仍在开发过程中。', NULL, 1, '2020-07-22 21:51:49', '2020-07-22 21:51:52');
INSERT INTO `label` VALUES (4, 'javascript', 'JavaScript 是一门弱类型的动态脚本语言,支持多种编程范式,包括面向对象和函数式编程,被广泛用于 Web 开发。', NULL, 1, '2020-07-22 21:53:56', '2020-07-22 21:53:59');
INSERT INTO `label` VALUES (5, 'jquery', 'jQuery是一套跨浏览器的JavaScript库,强化HTML与JavaScript之间的操作。由John Resig在2006年1月的BarCamp NYC上释出第一个版本。目前全球有28%的网站使用jQuery,是目前最受欢迎的JavaScript库。', NULL, 1, '2020-07-22 21:54:53', '2020-07-22 21:54:56');
INSERT INTO `label` VALUES (6, 'json', 'JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式。 易于人阅读和编写。同时也易于机器解析和生成。它基于JavaScript Programming Language, Standard ECMA-262 3rd Edition的一个子集。 JSON采用完全独立于语言的文本格式,但是也使用了类似于C语言家族的习惯(包括C, C++, C#, Java, JavaScript, Perl, Python等)。 这些特性使JSON成为理想的数据交换语言。', NULL, 1, '2020-07-22 21:56:36', '2020-07-22 21:56:38');
INSERT INTO `label` VALUES (7, 'ajax', 'AJAX为“Asynchronous JavaScript and XML”(异步的JavaScript与XML技术),是一种广泛应用在浏览器的网页开发技术。Ajax是多项技术的综合应用,Ajax概念由 Jesse James Garrett 所提出。', NULL, 1, '2020-07-22 21:57:11', '2020-07-22 21:57:14');
INSERT INTO `label` VALUES (8, 'bootstrap', '简洁、直观、强悍的前端开发框架,让web开发更迅速、简单。', NULL, 1, '2020-07-22 21:58:21', '2020-07-22 21:58:24');
INSERT INTO `label` VALUES (9, 'java', 'Java 是一种可以撰写跨平台应用软件的面向对象的程序设计语言,是由 SunMicrosystems 公司于 1995 年 5 月推出的 Java 程序设计语言和 Java 平台Java 技术具有卓越的通用性、高效性、平台移植性和安全性。', NULL, 2, '2020-07-22 22:01:11', '2020-07-22 22:01:16');
INSERT INTO `label` VALUES (10, 'spring', 'Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson 在其著作Expert One-On-One J2EE Development and Design中阐述的部分理念和原型衍生而来。', NULL, 2, '2020-07-22 22:10:06', '2020-07-22 22:10:09');
INSERT INTO `label` VALUES (11, 'hibernate', 'Hibernate是一个开放源代码的对象关系映射框架,它对JDBC进行了非常轻量级的对象封装,Hibernate可以应用在任何使用JDBC的场合,既可以在Java的客户端程序使用,也可以在Servlet/JSP的Web应用中使用,最具革命意义的是,Hibernate可以在应用EJB的J2EE架构中取代CMP,完成数据持久化的重任。Hibernate的核心接口一共有6个,分别为:Session、SessionFactory、Transaction、Query、Criteria和Configuration。', NULL, 2, '2020-07-22 22:13:00', '2020-07-22 22:13:03');
INSERT INTO `label` VALUES (12, 'tomcat', NULL, NULL, 2, '2020-07-22 22:22:34', '2020-07-22 22:22:37');
INSERT INTO `label` VALUES (13, 'intellij-idea', 'DEA 全称 IntelliJ IDEA,是java语言开发的集成环境,IntelliJ在业界被公认为最好的java开发工具之一,尤其在智能代码助手、代码自动提示、重构、J2EE支持、Ant、JUnit、CVS整合、代码审查、 创新的GUI设计等方面的功能可以说是超常的。IDEA是JetBrains公司的产品,这家公司总部位于捷克共和国的首都布拉格,开发人员以严谨著称的东欧程序员为主。', NULL, 2, '2020-07-22 22:23:50', '2020-07-22 22:23:53');
INSERT INTO `label` VALUES (14, 'eclipse', 'Eclipse(软件)是一个主要由Java编写,用于软件项目开发的开源集成开发环境(IDE)。得益于其完善的插件机制和开源特性,从最开始仅仅支持Java语言项目开发迅速扩展,目前基于Eclipse已经发展出用于编写Ada, C, C++, COBOL, Fortran, Haskell, JavaScript, Lasso, Perl, PHP, Python, Ruby等多种语言项目的多种IDE软件。', NULL, 2, '2020-07-22 22:24:35', '2020-07-22 22:24:38');
INSERT INTO `label` VALUES (15, 'maven', NULL, NULL, 2, '2020-07-22 22:25:10', '2020-07-22 22:25:12');
INSERT INTO `label` VALUES (16, 'springmvc', NULL, NULL, 2, '2020-07-22 22:25:50', '2020-07-22 22:25:53');
INSERT INTO `label` VALUES (17, 'mybatis', NULL, NULL, 2, '2020-07-22 22:26:03', '2020-07-22 22:26:05');
-- ----------------------------
-- Table structure for logs
-- ----------------------------
DROP TABLE IF EXISTS `logs`;
CREATE TABLE `logs` (
`lid` int(11) NOT NULL AUTO_INCREMENT COMMENT '日志id',
`laccount` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '操作账户',
`lhandle` int(11) NOT NULL,
`lip` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`lid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '日志表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of logs
-- ----------------------------
-- ----------------------------
-- Table structure for navigation
-- ----------------------------
DROP TABLE IF EXISTS `navigation`;
CREATE TABLE `navigation` (
`nid` int(11) NOT NULL AUTO_INCREMENT,
`nname` varchar(20) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL,
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`nid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 6 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '导航栏' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of navigation
-- ----------------------------
INSERT INTO `navigation` VALUES (1, '首页', '2020-07-22 18:41:51', '2020-07-22 18:41:54');
INSERT INTO `navigation` VALUES (2, '专栏', '2020-07-22 18:42:08', '2020-07-22 18:42:10');
INSERT INTO `navigation` VALUES (3, '资讯', '2020-07-22 18:42:21', '2020-07-22 18:42:23');
INSERT INTO `navigation` VALUES (4, '问答', '2020-07-22 18:42:32', '2020-07-22 18:42:36');
INSERT INTO `navigation` VALUES (5, '活动', '2020-07-22 18:42:45', '2020-07-22 18:42:47');
-- ----------------------------
-- Table structure for permissions
-- ----------------------------
DROP TABLE IF EXISTS `permissions`;
CREATE TABLE `permissions` (
`pid` int(11) NOT NULL AUTO_INCREMENT COMMENT '权限id',
`pname` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '名称',
`pdescribe` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`pid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '权限表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of permissions
-- ----------------------------
-- ----------------------------
-- Table structure for praise
-- ----------------------------
DROP TABLE IF EXISTS `praise`;
CREATE TABLE `praise` (
`gid` int(11) NOT NULL AUTO_INCREMENT COMMENT '点赞id',
`eid` int(11) NULL DEFAULT NULL COMMENT '博客id',
`aid` int(11) NOT NULL COMMENT '账户id',
`gpraise` int(2) NOT NULL COMMENT '0:点赞 1:未点赞',
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`gid`) USING BTREE,
INDEX `FK_Reference_9`(`eid`) USING BTREE,
INDEX `praise_account`(`aid`) USING BTREE,
CONSTRAINT `FK_Reference_9` FOREIGN KEY (`eid`) REFERENCES `essay` (`eid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `praise_account` FOREIGN KEY (`aid`) REFERENCES `account` (`aid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '点赞表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of praise
-- ----------------------------
-- ----------------------------
-- Table structure for role
-- ----------------------------
DROP TABLE IF EXISTS `role`;
CREATE TABLE `role` (
`rid` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色id',
`rname` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '角色名称',
`rdescribe` varchar(100) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '描述',
`gmt_create` datetime(0) NOT NULL,
`gmt_modified` datetime(0) NOT NULL,
PRIMARY KEY (`rid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of role
-- ----------------------------
INSERT INTO `role` VALUES (1, 'gadmin', '拥有无上权力', '2020-08-04 21:47:58', '2020-08-04 21:48:07');
INSERT INTO `role` VALUES (2, 'admin', '可查看所有博主信息及发表文章总数量和总点赞量及总评论量', '2020-08-04 21:50:45', '2020-08-04 21:50:51');
INSERT INTO `role` VALUES (3, 'blogger', '可查看他人文章及评论他人文章/点赞,对自己的文章和评论可自由操作', '2020-08-04 21:52:05', '2020-08-04 21:52:08');
INSERT INTO `role` VALUES (4, 'common', '仅供观看他人文章及评论/点赞/收藏,无法发表文章', '2020-08-04 21:53:11', '2020-08-04 21:53:14');
-- ----------------------------
-- Table structure for role_permissions
-- ----------------------------
DROP TABLE IF EXISTS `role_permissions`;
CREATE TABLE `role_permissions` (
`rpid` int(11) NOT NULL AUTO_INCREMENT COMMENT '角色权限中间表id',
`rid` int(11) NULL DEFAULT NULL COMMENT '角色id',
`pid` int(11) NULL DEFAULT NULL COMMENT '权限id',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`rpid`) USING BTREE,
INDEX `FK_Reference_3`(`rid`) USING BTREE,
INDEX `FK_Reference_4`(`pid`) USING BTREE,
CONSTRAINT `FK_Reference_3` FOREIGN KEY (`rid`) REFERENCES `role` (`rid`) ON DELETE RESTRICT ON UPDATE RESTRICT,
CONSTRAINT `FK_Reference_4` FOREIGN KEY (`pid`) REFERENCES `permissions` (`pid`) ON DELETE RESTRICT ON UPDATE RESTRICT
) ENGINE = InnoDB AUTO_INCREMENT = 1 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '角色权限中间表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of role_permissions
-- ----------------------------
-- ----------------------------
-- Table structure for special
-- ----------------------------
DROP TABLE IF EXISTS `special`;
CREATE TABLE `special` (
`sid` int(11) NOT NULL AUTO_INCREMENT COMMENT '专栏id',
`sname` varchar(50) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NOT NULL COMMENT '名称',
`sdescribe` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '描述',
`surl` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '图片路径',
`sstate` int(1) NOT NULL DEFAULT 0 COMMENT '状态0通过 1 待审核',
`dedid` int(1) NOT NULL DEFAULT 0 COMMENT '逻辑删除',
`aid` int(11) NOT NULL COMMENT '外键, 关联账户id',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
PRIMARY KEY (`sid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 17 CHARACTER SET = utf8mb4 COLLATE = utf8mb4_general_ci COMMENT = '个人分类专栏' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of special
-- ----------------------------
INSERT INTO `special` VALUES (1, 'Java', '世界流行的面向对象设计语言。', 'http://127.0.0.1:8085/af90b_KDA.jpg', 0, 0, 4, '2020-08-13 22:15:51', '2020-09-20 20:41:30');
INSERT INTO `special` VALUES (3, 'Mysql', '目前最流行的关系型数据库之一,其受宠程度难以想象。', 'http://127.0.0.1:8085/af90b_KDA.jpg', 0, 0, 4, '2020-08-14 13:25:03', '2020-08-17 17:47:46');
INSERT INTO `special` VALUES (7, 'Mysql', '目前最流行的关系型数据库', 'http://127.0.0.1:8085/f350b_02.jpg', 0, 0, 5, '2020-08-21 12:28:19', '2020-08-21 12:28:19');
INSERT INTO `special` VALUES (12, 'Android', '开发APP的首选', 'http://127.0.0.1:8085/f350b_02.jpg', 0, 0, 4, '2020-09-20 20:33:51', '2020-09-20 20:33:51');
INSERT INTO `special` VALUES (13, 'SqlServer', '关系型数据库首选之一', 'http://127.0.0.1:8085/f89a5_02.jpg', 0, 0, 4, '2020-09-20 20:36:24', '2020-09-20 20:36:24');
INSERT INTO `special` VALUES (14, 'SpringMVC', 'Web层首选框架', 'http://127.0.0.1:8085/af90b_KDA.jpg', 0, 0, 4, '2020-09-20 20:38:33', '2020-09-20 20:38:33');
INSERT INTO `special` VALUES (15, 'Python', '胶水语言,用于人工智能比较流行', 'http://127.0.0.1:8085/8b2c4_xd.jpg', 0, 0, 4, '2020-09-20 20:42:08', '2020-09-20 20:42:08');
INSERT INTO `special` VALUES (16, 'HTML', '前端静态脚本语言', 'http://127.0.0.1:8085/afa99_KDA.jpg', 0, 0, 4, '2020-09-20 20:45:38', '2020-09-20 20:45:38');
-- ----------------------------
-- Table structure for user_info
-- ----------------------------
DROP TABLE IF EXISTS `user_info`;
CREATE TABLE `user_info` (
`uid` int(11) NOT NULL AUTO_INCREMENT COMMENT '账户信息id',
`uname` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '昵称',
`uemail` varchar(25) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL COMMENT '邮箱',
`uage` int(11) NULL DEFAULT NULL COMMENT '年龄',
`usex` int(11) NULL DEFAULT NULL COMMENT '性别',
`uhobby` int(11) NULL DEFAULT NULL COMMENT '爱好',
`ubardain` varchar(255) CHARACTER SET utf8 COLLATE utf8_general_ci NULL DEFAULT NULL COMMENT '简介',
`gmt_create` datetime(0) NOT NULL COMMENT '创建时间',
`gmt_modified` datetime(0) NOT NULL COMMENT '修改时间',
`aid` int(11) NOT NULL COMMENT '账户id',
PRIMARY KEY (`uid`) USING BTREE
) ENGINE = InnoDB AUTO_INCREMENT = 5 CHARACTER SET = utf8 COLLATE = utf8_general_ci COMMENT = '用户信息表' ROW_FORMAT = Dynamic;
-- ----------------------------
-- Records of user_info
-- ----------------------------
INSERT INTO `user_info` VALUES (3, '71f80ad0', '[email protected]', NULL, NULL, NULL, NULL, '2020-08-10 13:05:21', '2020-08-10 13:05:21', 4);
INSERT INTO `user_info` VALUES (4, '386d41f8', '[email protected]', NULL, NULL, NULL, NULL, '2020-08-21 12:22:27', '2020-08-21 12:22:27', 5);
SET FOREIGN_KEY_CHECKS = 1;
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Java
1
https://gitee.com/aerfazhe/aefz-blog.git
[email protected]:aerfazhe/aefz-blog.git
aerfazhe
aefz-blog
aefz-blog
master

搜索帮助