- 博客(19)
- 收藏
- 关注
原创 PageHelper.startPage的使用
PageHelper.startPage的使用PageHelper是MyBatis的分页插件,它能够帮助我们快速且简洁的实现分页功能。传统的分页都需要我们程序员手动在sql语句里写LIMIT语句,而PageHelper这个插件能够帮助我们过滤sql,自动添加LIMIT语句,使得sql语句看上去更加简洁,具体实现方法如下(注意:PageHelper必须在sql语句前使用,否则过滤无效)PageHelper.startPage((int)分页的页数, (int)每个分页的内容数量);List<Edu
2021-12-16 17:10:28 19906
原创 深入JVM学习------垃圾回收器
深入JVM学习------垃圾回收器这篇文章主要学习一下四种垃圾回收器。分别是串行、吞吐量优先、响应时间优先以及G1(Garbage1).串行单线程堆内存较小,适合个人电脑在执行垃圾回收时会阻塞其它线程,等待垃圾回收后其余线程再运行。吞吐量优先多线程堆内存较大,多核CPU单位时间内,STW的时间最短在执行垃圾回收时可以并行的进行垃圾回收。响应时间优先多线程堆内存较大,多核CPU尽可能让单次STW时间最短初始标记,时间很短,并且只标记根对象。并发标记,标记剩余
2021-04-23 19:55:35 219
原创 深入JVM学习------垃圾回收算法
深入JVM学习------垃圾回收算法这次我们主要说四种垃圾回收算法,分别是标记—清除,标记—整理,复制以及分代回收。标记—清楚算法在标记阶段,像图中,collector会从根对象开始遍历,发现被引用的对象就做上标记。在清除阶段,collector会对堆内存从头到尾进行遍历,将没有标记的对象进行回收,释放内存。该方法优点:速度快。该方法缺点:存在大量的零碎内存,当有需要大内存的对象要存储时会导致内存溢出。标记—整理算法在标记阶段,该方法也是会从根对象开始遍历,发现被引用的对象就做上
2021-04-23 18:27:22 175
原创 深入JVM学习------四种引用
深入JVM学习------四种引用相信不少人在查看源码时或多或少都听到过强引用,弱引用,软引用这些字眼,那么他们到底有什么区别呢?强引用强引用是使用最普遍的引用。如图中a对象使用强引用引用A1对象,那垃圾回收器绝不会回收A1对象。当内存空间不足时,Java会抛出OutOfMemoryError错误,使程序异常终止,而不是回收具有强引用的对象来解决内存不足的问题软引用如果一个对象只具有软引用,则内存空间充足时,垃圾回收器就不会回收它;如果内存空间不足了,就会回收这些对象的内存。但是如果有另一个强
2021-04-23 13:19:16 167
原创 ThreadLocal学习(四)
ThreadLocal学习(四)了解了ThreadLocalMap之后,里面出现了一个名词 “弱引用” ,那么为什么要将这个设置为弱引用而不是设置成强引用呢?其实主要是因为内存泄露问题,看下面这张图就知道了:如果是为强引用的话:当ThreadLocalRef不再使用ThreadLocal对象并且CurrentThread依然运行情况下,始终有强引用链CurrentThreadRef—>CurrentThread—>ThreadLocalMap—>Entry—>Thread
2021-04-23 12:50:50 123
原创 深入JVM学习------字符串常量池
深入JVM学习------字符串常量池jdk8之后,字符串常量池被移入了堆中,所以字符串常量池在jdk8之后是存在于堆里的,那么字符串常量池又有什么用呢?让我们看一个代码:String s1 = ‘a’;String s2 = ‘b’;String s3 = ‘a’ + ‘b’;String s4 = s1 + s2;String s5 = “ab”;String s6 = s4.intern();System.out.println(s3 == s4);//falseSystem.
2021-04-22 21:22:49 95
原创 深入JVM学习------JVM简介
深入JVM学习------JVM简介首先我们先要了解JVM是什么:上图中红色框部分就是JVM,如上图所示,首先Java源代码会被Java编译器编译为字节码文件,然后由JVM中的类加载器加载各个类的字节码文件,加载完毕后,交给JVM执行引擎.在整个程序的执行过程中,JVM会用一段空间来存储程序执行期间需要用到的数据和相关信息,这段空间一般被称作为Runtime Data Area(运行时数据区),也就是我们常说的JVM内存.因此,在Java中我们常常说到的内存管理就是针对这段空间进行管理。那么运行时数
2021-04-22 20:59:36 150
原创 ThreadLocal学习(三)
ThreadLocal学习(三)上一篇我们说了ThreadLocal的源码,那么肯定有人发出疑问:ThreadLocalMap是什么东西,那么这次就详细说一下ThreadLocalMap。基本结构ThreadLocalMap是ThreadLocal的内部类,没有实现Map接口,用独立的方式实现了Map功能,内部的Entry也是独立实现成员变量 /** * 初始变量 -- 必须是2的整次幂 */ private static final int INITI
2021-04-22 14:59:55 130
原创 ThreadLocal学习(二)
ThreadLocal学习(二)了解了ThreadLocal的使用方法后,我们继续探究ThreadLocal的底层实现原理。如果我们去翻阅ThreadLocal的源码的话可以发现ThreadLocal有四种方法:方法作用protected T initialValue()返回当前线程局部变量的初始值public void set(T value)设置当前线程绑定的局部变量public T get()获取当前线程绑定的局部变量public void remov
2021-04-22 14:11:18 72
原创 ThreadLocal学习(一)
ThreadLocal学习(一)为什么要学习ThreadLocal首先让我们看几行代码:public class test { private String s; public String getS() {return s;} public void setS(String s) {this.s = s;} public static void main(String[] args) { test t = new test();
2021-04-22 13:29:26 87
原创 SpinrgBoot多个yml文件使用
SpinrgBoot多个yml文件使用在平常写代码中我们总是需要使用到多个yml文件,如果只写一个yml文件的话那么阅读起来将会非常的麻烦,那么,多个yml文件应该如何去写呢?解决办法:图中红框部分意思为引入额外的yml配置文件这是额外的配置文件,当我们这样子写之后,可以通过自动注入或者手动赋值的方法获取到数值。例如最后可以得到结果:以上就是SpinrgBoot多个yml文件使用啦!...
2021-03-25 11:56:08 185
原创 SpringBoot异常
SpringBoot异常:This application has no explicit mapping for /error, so you are seeing this as a fallback.解决办法:出现这个异常的原因是没有将application类放在最外层,如图中所示我们只需将aplication放到最外层中即可这样就能成功的运行了!...
2021-03-25 11:27:58 84
原创 Spring整合SpringDataJpa----JPQL
Spring整合SpringDataJpa----JPQL话不多说,直接上代码dao层:package dao;import domain.Customer;import org.springframework.data.jpa.repository.JpaRepository;import org.springframework.data.jpa.repository.JpaSpecificationExecutor;import org.springframework.data.jpa.
2021-03-16 18:28:54 133
原创 Spring整合SpringDataJpa
Spring整合SpringDataJpaspring整合jpa的方式是将jpa采用工厂模式管理,我们通过spring的编写方式使用jpa那么来看看具体代码:首先是maven的引入:<?xml version="1.0" encoding="UTF-8"?><project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
2021-03-16 17:41:21 342
原创 SpringDataJpa---jpql初步使用
SpringDataJpa—jpql初步使用1、为什么要使用jpql?平常我们在使用HIbernate等框架时对一些复杂的sql语句编写十分的不方便,于是便出现了jpql,它是一款面向对象编写sql的框架,正因为它简单、强大并且适用于任何类型的数据库,所以现在十分流行2、具体用法查询语句:/** * 查询全部 */ @Test public void testFindAll(){ //加载配置文件创建工厂(实体管理工厂)对象 En
2021-03-11 20:41:11 214
原创 SpringDataJpa更新、删除操作
SpringDataJpa更新、删除操作更新操作具体代码如下:@Test public void testUpdate(){ //通过实体管理工厂获取实体管理器 EntityManager em = JpaUtils.getEntityManager(); //获取事务对象,开启事务 EntityTransaction tx = em.getTransaction(); tx.begin();
2021-03-11 19:43:22 538
原创 SpringDataJpa根据ID查询数据两种方法
SpringDataJpa根据ID查询数据两种方法1、find()方法具体代码如下: @Test public void testFind(){ //通过实体管理工厂获取实体管理器 EntityManager em = JpaUtils.getEntityManager(); //获取事务对象,开启事务 EntityTransaction tx = em.getTransaction(); tx.begin();
2021-03-11 19:35:29 3082
原创 SpringDataJpa简单优化
SpringDataJpa简单优化未优化前的代码:public class JpaTest { /** * 测试jpa的保存 * 案例:保存一个客户到数据库中 * jpa的操作步骤 * 1、加载配置文件创建工厂(实体管理工厂)对象 * 2、通过实体管理工厂获取实体管理器 * 3、获取事务对象,开启事务 * 4、完成增删改查操作 * 5、提交事务(回滚事务)
2021-03-11 18:00:31 353
原创 SpringDataJpa入门
SpringDataJpa入门关于SpringDataJpa:SpringDataJpa是什么?为什么要使用SpringDataJpa?SpringDataJpa的初级用法。SpringDataJpa是什么?SpringDataJPA 是springdata 项目下的一个模块。提供了一套基于JPA 标准操作数据库的简化方案。底层默认的是依赖 HibernateJPA 来实现的。它并不是一个框架,而是一个规范语言,它规范了orm框架使用方式,当然我们最常用的还是Hibernate。SpringD
2021-03-11 13:16:51 167
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人