初试【Vue+Springboot+SpringMVC+Druid+Mybatis+Caching+Redis】实现完整版前后端分离项目

最近喉咙不适,没法说话,只能做个安静的美男子了,上周住在医院病床上还想着自己可以从0开始完善整套WEB项目,出院后兴致勃勃地做起来了,调试了这两三晚,前端太难弄了

下面就是用到的一些常规框架:

前端框架:Vue
后端工程:Springboot
后端WEB框架:SpringMVC
连接池:Druid
持久层:Mybatis
缓存抽象:Caching
缓存类型:Redis

下面就是整个页面结果

由于用了Myba[……]

Read more

Spring缓存抽象,Mybatis的Mapper接口使用@Cacheable注解的异常问题

在处理一些读多写少的操作,通过缓存很大程度减轻了后端的压力,测试Spring的缓存抽象,通过@EnableCaching注解方式来使用缓存,持久层用了Mybatis框架,但在@Cacheable注解select方法的时候,一直报一个错误,都怀疑是否注解能放在Mybatis的Mapper interface接口方法上,差点都换Hibernate来操作了

首先表信息如下

mysql root@loc[......]

Read more

Java类的加载机制

1、什么是类的加载

类的加载指的是将类的.class文件中的二进制数据读入到内存中,将其放在运行时数据区的方法区内,然后在堆区创建一个java.lang.Class对象,用来封装类在方法区内的数据结构。类的加载的最终产品是位于堆区中的Class对象,Class对象封装了类在方法区内的数据结构,并且向Java程序员提供了访问方法区内的数据结构的接口。

类加载器并不需要等到某个类被“首[……]

Read more

Java CGLIB动态代理

JDK InvocationHandler的动态代理是基于接口来实现的,从newProxyInstance()方法中的参数也可以看出来,假如被代理的对象的类并没有实现接口,而是一个普通的类,那么久可以通过CGLIB动态代理来实现

了解了JDK动态代理之后,再来理解CGLIB相对容易一些,大致流程

1、通过CGLIB的Enhancer对象注入被代理类和方法属性,进而调用create()方法来创建代理[……]

Read more

Java JDK动态代理

到处都是用的动态代理,这次是认真的

静态代理:事先已经知道了要代理什么,而且编译时代理类就已经生成

动态代理:事先不知道要代理什么,运行的时候才能确定,实现InvocationHandler接口,调用Proxy的newProxyInstance()方法通过反射动态地创建代理类

下图就是创建代理类的流程

图来自:https://upload-images.jianshu.io/upload_ima[……]

Read more

Spring:MyBatis框架@MapperScan注解流程和疑惑

折腾了老久,原来是一个@MapperScan注解放的位置不对,导致对于Mapper接口实例化十分疑惑,记录一下过程

MyBatis和Hibernate不太一样,SQL是需要自行配置,而不像JPA里都已经封装好了,如果SQL比较简单,直接用封装好的接口即可,但是如果十分复杂的SQL,还需要审核,校验,可以通过MyBatis框架来实现持久层

图来自:https://oscimg.o[……]

Read more

Spring操作Redis数据库,RedisTemplate和StringRedisTemplate差异

Redis是KV内存数据库,支持很多数据结构,具体如下面之前写过的,也可以自行google

http://lihuia.com/?s=redis

Spring对Redis操作的支持,基本也和JDBC,MongoDB类似,通过Spring Data Redis,具体有

1、客户端支持,Jedis和Lettuce

2、RedisTemplate

3、Repository支持

测试一下通过Jedis来操[……]

Read more

MySQL索引B+树数据结构

看了下MySQL InnoDB索引,十分好奇这个B+Tree数据结构如果是类定义,这个class应该如何来写,简单了解一下,满足一下好奇心

下面两个链接,可以自行手动创建操作B+Tree的动态图,十分直观:

B+Tree Visualization

JavaScript B+ Tree

首先看下B-Tree,定义的一堆条件可以google,与B+Tree最大的不同是,B-T[……]

Read more

JDBC、JPA、Spring Data JPA、Hibernate、Mybatis

基础概念

jdbc(Java DataBase Connectivity)是java连接数据库操作的原生接口。JDBC对Java程序员而言是API,对实现与数据库连接的服务提供商而言是接口模型。作为API,JDBC为程序开发提供标准的接口,并为各个数据库厂商及第三方中间件厂商实现与数据库的连接提供了标准方法。一句话概括:jdbc是所有框架操作数据库的必须要用的,由数据库厂商提供,但是为了方便ja[……]

Read more