自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 Java类加载顺序

Java类加载顺序1、ClassNotFoundExcetpion  我们在开发中,经常可以遇见java.lang.ClassNotFoundExcetpion这个异常,今天我就来总结一下这个问题。对于这个异常,它实质涉及到了java技术体系中的类加载。Java的类加载机制是技术体系中比较核心的部分,虽然它和我们直接打交道不多,但是对其背后的机理有一定理解有助于我们排查程序中出现的类加载失败等...

2019-12-22 17:11:19 197

原创 拦截器和过滤器

拦截器和过滤器区别拦截器是基于java的反射机制的,而过滤器是基于函数回调。拦截器不依赖与servlet容器,过滤器依赖与servlet容器。拦截器只能对action请求起作用,而过滤器则可以对几乎所有的请求起作用。拦截器可以访问action上下文、值栈里的对象,而过滤器不能访问。在action的生命周期中,拦截器可以多次被调用,而过滤器只能在容器初始化时被调用一次。拦截器可以获取...

2019-12-22 17:07:34 153 1

原创 @Transactional注解

@Transactional注解一.事物传播行为介绍:@Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)  @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务  @Transactional(pro...

2019-12-22 17:07:15 147

原创 微服务相关

SpringCloudSpringCloud 核心组件1.服务注册发现 - Netflix Eureka1.基础架构Eureka架构中的三个核心角色:服务注册中心Eureka的服务端应用,提供服务注册和发现功能,就是刚刚我们建立的eureka-demo服务提供者提供服务的应用,可以是SpringBoot应用,也可以是其它任意技术实现,只要对外提供的是Rest风格服务即可。本...

2019-12-22 17:04:23 282

原创 Volatile关键字

Volatile关键字的作用以及原理​ 在只有双重检查锁,没有volatile的懒加载单例模式中,由于指令重排序的问题,我确实不会拿到两个不同的单例了,但我会拿到“半个”单例。volatile常用于保持内存可见性和防止指令重排序。保持内存可见性内存可见性(Memory Visibility):所有线程都能看到共享内存的最新状态。失效数据以下是一个简单的可变整数类:public cl...

2019-12-22 17:03:23 104

原创 G1收集器

G1收集器一.定义开启选项:-XX:+UseG1GC​ G1垃圾收集器也是以关注延迟为目标、服务器端应用的垃圾收集器,被HotSpot团队寄予取代CMS的使命,也是一个非常具有调优潜力的垃圾收集器。虽然G1也有类似CMS的收集动作:初始标记、并发标记、重新标记、清除、转移回收,并且也以一个串行收集器做担保机制,但单纯地以类似前三种的过程描述显得并不是很妥当。事实上,G1收集与以上三组收集器...

2019-12-22 17:00:42 120

原创 SpringBoot配置多数据源

SpringBoot配置多数据源一.分包实现在application.properties中配置两个数据库:## test1 databasespring.datasource.test1.url=jdbc:mysql://localhost:3307/multipledatasource1?useUnicode=true&characterEncoding=UTF-8&amp...

2019-12-22 17:00:10 174

原创 HashMap,HashTable,ConcurrentHashMap

HashMap,HashTable,ConcurrentHashMap一.HashTable底层数组+链表实现,无论key还是value都不能为null,线程安全,实现线程安全的方式是在修改数据时锁住整个HashTable,效率低,ConcurrentHashMap做了相关优化初始size为11,扩容:newsize = olesize*2+1计算index的方法:index = (ha...

2019-12-22 16:59:45 118

原创 @Transactional注解

@Transactional注解一.事物传播行为介绍:@Transactional(propagation=Propagation.REQUIRED) :如果有事务, 那么加入事务, 没有的话新建一个(默认情况下)  @Transactional(propagation=Propagation.NOT_SUPPORTED) :容器不为这个方法开启事务  @Transactional(pro...

2019-12-22 16:50:38 171

原创 B+树

B树一.定义​ B树也称B-树,它是一颗多路平衡查找树。我们描述一颗B树时需要指定它的阶数,阶数表示了一个结点最多有多少个孩子结点,一般用字母m表示阶数。当m取2时,就是我们常见的二叉搜索树。一颗m阶的B树定义如下:每个结点最多有m-1个关键字。根结点最少可以只有1个关键字。非根结点至少有Math.ceil(m/2)-1个关键字。每个结点中的关键字都按照从小到大的顺序排列,每个关键...

2019-12-21 14:10:10 1316

原创 G1收集器

G1收集器一.定义开启选项:-XX:+UseG1GC​ G1垃圾收集器也是以关注延迟为目标、服务器端应用的垃圾收集器,被HotSpot团队寄予取代CMS的使命,也是一个非常具有调优潜力的垃圾收集器。虽然G1也有类似CMS的收集动作:初始标记、并发标记、重新标记、清除、转移回收,并且也以一个串行收集器做担保机制,但单纯地以类似前三种的过程描述显得并不是很妥当。事实上,G1收集与以上三组收集器...

2019-12-21 14:09:26 136

原创 Monitor机制

Monitor机制monitor概要Java 语言实现 monitor 机制,属于编译器的工作。monitor机制需要3个元素配合使用,分别是:临界区monitor 对象及锁条件变量以及定义在 monitor 对象上的 wait,signal 操作使用monitor机制让互斥进入临界区,用monitor 对象来保存被阻塞的线程,由于 monitor 机制本质上是基于 mutex ...

2019-12-18 11:50:35 190

原创 mybatisplus(二) 条件构造器

AbstractWrapperQueryWrapper(LambdaQueryWrapper)和UpdateWrapper(LambdaUpdateWrapper)的父类,用于生成sql的where条件, entity属性也用于生成sql的where条件entity生成的 where 条件与 使用各个 api 生成的 where 条件 没有任何关联行为 !!!Mybatis-Plus 通...

2019-12-18 11:50:03 572

原创 mybatisplus(一)

什么是mybatispulsMyBatis-Plus(简称 MP)是一个 MyBatis 的 增强工具 ,在 MyBatis 的基础上只做增强不做改变,为简化开发、提高效率而生。集成MyBatis-Plus非常的简单,只需要引入 starter 工程,并配置 mapper 扫描路径即可。@MapperScan指定要变成实现类的接口所在的包,然后包下面的所有接口在编译之后都会生成相应的实现...

2019-12-18 11:49:30 297

原创 MybatisPlus

MybatisPlus1.BaseMappermp中所有的mapper都通过实现mp提供的basemapper接口,其默认提供了一系列的增删改查的基础方法,并且开发人员对于这些基础操作不需要写SQL进行处理操作2.wrapper首先在这里写下官方文档的链接位置,官方文档说的很详细。Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示AbstractWrap...

2019-12-18 11:48:59 140

原创 缓存穿透、缓存击穿、缓存雪崩

缓存处理流程使用缓存通常的操作是,请求先访问缓存数据,如果缓存中不存在的话,就会回源到数据库中然后将数据写入到缓存中;如果存在的话就直接返回数据。缓存穿透现象: 每次请求直接穿透缓存层,直接回源到数据库中,给数据库带来了巨大访问压力,甚至宕机。(宕机:操作系统无法从一个严重系统错误中恢复过来,或系统硬件层面出问题,以致系统长时间无响应,而不得不重新启动计算机的现象)原因: 访问数据会先访问...

2019-12-18 11:48:43 70

原创 对象相关

对象相关1.用静态工厂方法代替构造器优势:有名称。当一个类需要多个带有相同签名的构造器时,使用静态工厂代替,并且仔细选择名称。不必在每次调用的时候都创建一个新对象。有助于类总能严格控制在某个时刻那些实例应该存在。可以返回原返回类型的任何子类型的对象。灵活应用:api可以返回对象,同时又不会使对象的类变成公有的。所返回的对象的类随着每次调用而产生变化,取决于静态工厂方法的参数值。方法...

2019-12-18 11:47:57 100

原创 数据库分库分表思想

数据库分库分表思想一.数据切分​ 关系型数据库本身比较容易成为系统瓶颈,单机存储容量、连接数、处理能力都有限。当单表的数据量达到1000W或100G以后,由于查询维度较多,即使添加从库、优化索引,做很多操作时性能仍下降严重。此时就要考虑对其进行切分了,切分的目的就在于减少数据库的负担,缩短查询时间。​ 数据库分布式核心内容无非就是数据切分(Sharding),以及切分后对数据的定位、整合。数...

2019-12-18 11:47:33 168

原创 单例模式

单例模式定义:确保一个类只有一个实例,而且自行实例化并向整个系统提供这个实例。类型:创建类模式类图:[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-0TSHtbll-1576640726128)(C:\Users\zsj55\AppData\Roaming\Typora\typora-user-images\1568448059405.png)]单例模式有以...

2019-12-18 11:46:51 75

原创 Mybatis缓存机制

Mybatis缓存机制一.一级缓存​ Mybatis对缓存提供支持,但是在没有配置的默认情况下,它只开启一级缓存,一级缓存只是相对于同一个SqlSession而言。所以在参数和SQL完全一样的情况下,使用同一个SqlSession对象调用一个Mapper方法,往往只执行一次SQL。因为使用SelSession第一次查询后,MyBatis会将其放在缓存中,以后再查询的时候,如果没有声明需要刷新,...

2019-12-18 11:45:16 61

原创 Executor框架

Executor框架一.Executor框架的结构1.Executor框架主要由3大部分组成:任务: 包括被执行的任务需要实现的接口:Runable 接口、Callable接口;任务的执行: 包括任务执行机制的核心接口Executor,以及继承自Executor的ExecutorService接口。Executor框架有两个关键类实现了ExecutorService接口:ThreadPo...

2019-12-18 11:44:45 71

原创 MybatisPlus

MybatisPlus1.BaseMappermp中所有的mapper都通过实现mp提供的basemapper接口,其默认提供了一系列的增删改查的基础方法,并且开发人员对于这些基础操作不需要写SQL进行处理操作2.wrapper首先在这里写下官方文档的链接位置,官方文档说的很详细。Wrapper : 条件构造抽象类,最顶端父类,抽象类中提供4个方法西面贴源码展示AbstractWrap...

2019-12-09 10:20:53 94

原创 Monitor机制

Monitor机制monitor概要Java 语言实现 monitor 机制,属于编译器的工作。monitor机制需要3个元素配合使用,分别是:临界区monitor 对象及锁条件变量以及定义在 monitor 对象上的 wait,signal 操作使用monitor机制让互斥进入临界区,用monitor 对象来保存被阻塞的线程,由于 monitor 机制本质上是基于 mutex ...

2019-12-09 10:05:27 554

原创 Java基础5

Java基础五一.Map特点1.Map设计为一个接口2.Map针对的是键和值有一定的映射关系3.键应该是唯一的,无序的,类似于Set接口4.值应该是可重复,类似于Collection5.Map也应该具备集合应该有的方法6.值的顺序取决于键的顺序,map的数据结构完全取决于键的数据结构,与值无关1.HashMap特点:1.存储数据格式为key value2.集合里面数据是无序...

2019-09-23 21:51:44 68

原创 代理模式

代理模式一.静态代理​ 首先, 定义接口和接口的实现类, 然后定义接口的代理对象, 将接口的实例注入到代理对象中, 然后通过代理对象去调用真正的实现类。​ 目标情况:代理类较少且确定​ 优点:可以做到在符合开闭原则的情况下对目标对象进行功能扩展。​ 缺点:我们得为每一个服务都得创建代理类,工作量太大,不易管理。同时接口一旦发生改变,代理类也得相 应修改。​ 创建步骤 1.创建服务...

2019-09-23 21:51:12 90

原创 Java基础5

Java基础五一.Map特点1.Map设计为一个接口2.Map针对的是键和值有一定的映射关系3.键应该是唯一的,无序的,类似于Set接口4.值应该是可重复,类似于Collection5.Map也应该具备集合应该有的方法6.值的顺序取决于键的顺序,map的数据结构完全取决于键的数据结构,与值无关1.HashMap特点:1.存储数据格式为key value2.集合里面数据是无序...

2019-09-22 17:25:38 73

原创 Java基础5

Java基础五一.Map特点1.Map设计为一个接口2.Map针对的是键和值有一定的映射关系3.键应该是唯一的,无序的,类似于Set接口4.值应该是可重复,类似于Collection5.Map也应该具备集合应该有的方法6.值的顺序取决于键的顺序,map的数据结构完全取决于键的数据结构,与值无关1.HashMap特点:1.存储数据格式为key value2.集合里面数据是无序...

2019-09-21 17:10:44 121 1

原创 SpringBoot + Mybatis 使用 Redis 实现缓存

SpringBoot + Mybatis 使用 Redis 实现缓存一.项目目录结构二.关键代码1.RedisConfig@Configurationpublic class RedisConfig extends CachingConfigurerSupport { // 自定义缓存key生成策略 @Bean public KeyGenerator keyG...

2019-09-16 09:27:47 155

原创 Shiro权限管理框架粗解

Shiro权限管理框架粗解一.流程二.权限管理模型用户(用户id,账号、密码…)权限(权限id,权限名称,访问地址)角色(角色id,角色名称)角色和权限关系(角色id、权限id)用户和角色关系(用户id、角色id)三.粗细颗粒度1.什么是粗颗粒度和细颗粒度​ 对资源类型的管理称为粗颗粒度权限管理,即只控制到菜单、按钮、方法,粗粒度的例子比如:用户具有用户管理的权限,具有导出...

2019-09-01 15:46:33 211

原创 JPA中的多表连接

JPA中的多表连接一.User类@ManyToMany @JoinTable(name="user_permission", //用来指定中间表的名称 //用于指定本表在中间表的字段名称,以及中间表依赖的是本表的哪个字段 joinColumns= {@JoinColumn(name="uid",referencedColumnName="id")}, //用于指定...

2019-09-01 08:26:16 2209

原创 Springboot+jpa实现分页

Springboot+jpa实现分页一.Repositorypublic interface ProductRepository extends CrudRepository<Product,String> { List<Product> findByName(String name); Optional<Product> findById(...

2019-08-17 10:11:40 1187

原创 Springboot+jpa实现分页

Springboot+jpa实现分页一.Repositorypublic interface ProductRepository extends CrudRepository<Product,String> { List<Product> findByName(String name); Optional<Product> findById(...

2019-08-17 08:51:23 2444

原创 Springboot 简单实现文件上传

Springboot 简单实现文件上传一.js$("button[name='uploadbtn']").click(function () { var hid = this.id; var uid = loginid; $('#uploadmodal').modal("show"); ...

2019-08-16 08:26:46 69

原创 Thymeleaf基础

Thymeleaf基础一.标准表达式语法Thymeleaf属性允许将它们的值设置为或包含表达式,由于它们使用的方言,我们将其称为标准表达式。这些表达式可以有五种类型:${...} : 变量表达式。*{...} : 选择表达式。#{...} : 消息 (i18n) 表达式。@{...} : 链接 (URL) 表达式。~{...} : 片段表达式。1.变量表达式前...

2019-08-14 12:56:57 135

原创 使用JdbcTemplate完成复杂查询

使用JdbcTemplate完成复杂查询一.Repositorypackage com.cy.repository;import com.cy.entity.Homework;import org.springframework.jdbc.core.JdbcTemplate;import org.springframework.stereotype.Repository;impor...

2019-08-12 08:31:18 1041

原创 CrudRepository基础

CrudRepository基础一.基础CrudRepository接口提供了最基本的对实体类的添删改查操作–T save(Tentity);//保存单个实体–Iterable save(Iterable<?extends T> entities);//保存集合–T findOne(IDid);//根据id查找实体–boolean exists(IDid);//根据id判断...

2019-08-09 08:27:01 9844

原创 SpringBoot+JPA实现数据库连接

SpringBoot+JPA简单实现数据库连接一.application.properties配置server.port=8080server.servlet.context-path=/SpringBootJPAspring.datasource.url=jdbc:mysql://localhost:3306/zzty-cy?useUnicode=true&characterEn...

2019-08-07 08:14:55 240

原创 使用ajax和Springboot实现用户登录

Controller代码package com.cy.controller;import com.cy.entity.User;import com.cy.service.UserService;import org.springframework.web.bind.annotation.RequestBody;import org.springframework.web.bind.a...

2019-08-05 08:19:18 2964 5

原创 SpringBoot基础一

SpringBoot基础一一.配置文件在maven项目的pom.xml下面添加<dependencies> <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-...

2019-08-04 08:20:13 57

原创 Ajax基础

Ajax基础一.概念AJAX = Asynchronous JavaScript and XML(异步的 JavaScript 和 XML)。AJAX 不是新的编程语言,而是一种使用现有标准的新方法。AJAX 是与服务器交换数据并更新部分网页的艺术,在不重新加载整个页面的情况下。二.创建XMLHttpRequest 对象创建 XMLHttpRequest 对象的语法:variable...

2019-08-03 08:26:55 87

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除