自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 整理了一篇关于java集合的文章,有图有真相

文章目录1.概述2.集合框架图2.1 Collection系2.2 Map系3.Collection接口4.Foreach与迭代器4.1迭代器执行原理4.2使用for循环还是迭代器Iterator对比5.List5.1 List概述5.2 ArrayList5.3 LinkedList5.4 Ve...

2020-06-19 23:08:37 64 0

原创 关于GC垃圾回收及其算法的一点思考

在学过java一些有关GC以及相关算法后,对一些概念以及GC与垃圾回收算法的关系有点混乱,觉得有必要好好总结一下了,虽然GC诞生的时间比java早,并且GC并不是java语言所独有的,但垃圾收集机制是java语言的招牌能力,极大的提高了开发效率,并且成为现代语言的标配,因此我们必须深入学习java...

2020-05-24 19:10:29 113 0

原创 java为什么匿名内部类的参数引用时final?final局部变量的生命周期

https://blog.csdn.net/tianjindong0804/article/details/81710268

2020-04-18 12:56:44 268 0

原创 jdk1.8之后的String.intern()方法内存分析

关于String.intern()方法,这个问题都被问烂了,有的文章在分析的时候还在用jdk1.7,jdk1.8之后内存模型发生了变化,内存的变化也会影响intern方法的执行,这里有必要写文章分析一下,请大家务必从头开始看,这样才能搞懂 1.字符串常量池划分 jvm对字符串常量池在不同jkd版本...

2020-04-05 14:10:55 1007 1

原创 为什么学习Spring,什么是Spring,什么是IOC,什么是DI,什么是容器

什么是Spring Spring 是分层的 Java SE/EE 应用 full-stack 轻量级开源框架,以 IoC(nverse Of Control:反转控制) 和 AOP(Aspect Oriented Programming:面向切面编程) 为内核,提供了展现层 Spring MVC ...

2020-03-03 14:46:02 403 0

原创 Spring-bean的生命周期,注解版

由于本人能力有限不能深入源码讲解,这里知识粗略的介绍一下bean的生命周期,先看一下图: 用简单的话来说就是: 第一步:通过构造器创建bean实例,默认是无参构造器 第二步:设置bean的属性值和引入其他的bean(spring的循环依赖),如果Bean实现了BeanNameAware接...

2020-06-29 22:52:35 20 0

原创 order by是否会产生文件类排序

建表SQL: 案例 case1: case2: 通过这两个案例,我们发现只要order by满足最佳左前缀法则,就可以使用到索引 总结:

2020-06-26 19:53:11 33 0

原创 索引优化,如何避免索引失效

索引失效的前提是建立索引,并且在一定情况下索引失效不起作用了,下面列出的就是避免索引失效的十种情况 这里说一下全值匹配和最佳左前缀法则: 全值匹配的意思是查找的字段顺序和个数与索引的列的个数和顺序一致 我们发现只要索引中第一列没有或者缺少某个复合索引中的索引列都会导致索引失效,这是因为违反了...

2020-06-26 15:25:26 32 0

原创 MySQL索引优化案例

文章目录1.range导致索引失效2.两表优化3.三表优化 1.range导致索引失效 针对这样的sql语句,它属于article表,并且事先准备了索引: cteate index idx_article_ccv on article(category_id,comments,views); 我...

2020-06-26 10:42:48 33 0

原创 Mysql-Explain用法详解

文章目录1.Explain能干嘛2.Explain包含的表头信息3.Explain-id(表的读取顺序)3.1 id相同3.2 id不同3.3 id相同又不同4. Explain-Select_type(数据读取操作的操作类型)5. Table6. Type7. possible_keys和ke...

2020-06-25 14:47:22 27 0

原创 Mysql-索引

文章目录1.什么是索引?为什么要建立索引?2.哪些情况需要建立索引3.哪些情况不需要建立索引4.索引有哪几种类型5.建立索引命令6.索引结构和检索原理7.索引使用场景 1.什么是索引?为什么要建立索引? 简介:数据库系统除了维护一张表的数据,还维护着一个满足特定查找算法的数据结构,这种数据结构就是...

2020-06-25 11:50:22 28 0

原创 ConcurrentHashMap和HashMap,HashTable的区别

文章目录1.为什么要使用ConcurrentHashMap 1.为什么要使用ConcurrentHashMap 由于HashMap的线程不安全:HashMap多线程死循环问题,在多线程环境下并不会使用HashMap,虽然HashTable是线程安全的,但是它的类似put,get方法都是Synchr...

2020-06-21 21:35:49 59 0

原创 整理Java基础知识遇到的问题

文章目录1.jdk1.5之后的三大版本2.JVM、JRE和JDK的关系3.java的跨平台性4.关于java的平台无关性5.java为什么要有字节码文件 1.jdk1.5之后的三大版本 Java SE(J2SE,Java 2 Platform Standard Edition,标准版) Jav...

2020-06-21 13:31:50 38 0

原创 springMVC处理一个请求的过程-源码详解

文章目录1.springMVC如何寻找对应的controller?2.将method封装到map中2.适配器处理3.处理Handler的参数4.参数处理细节总结: 贴上我们用来测试的代码: 很简单,就是一个注解的controller,只要从浏览器输入对应的路径,这个方法就会拦截这个请求,进而开始...

2020-06-17 22:53:23 38 0

原创 spring如何初始化一个bean

我们都知道,在创建一个spring应用的时候,通过构建spring容器,根据容器获取bean,那么spring是如何创建bean的呢?首先在创建bean容器时,通过上下文也就是非BeanFactory创建时,被标记的java对象就会在容器创建时被创建,如代码所示: ApplicationConte...

2020-06-13 21:40:28 136 0

原创 三层架构和MVC的区别

1.三层架构 三层架构(3-tier application) 通常意义上的三层架构就是将整个业务应用划分为:表现层(UI)、业务逻辑层(BLL)、数据访问层(DAL)。区分层次的目的即为了“高内聚,低耦合”的思想。 表现层(User Interface layer):通俗讲就是展现给用户的界面...

2020-06-13 12:47:46 45 0

原创 mybatis源码解析-如何执行查询操作

//1.通过输入流解析xml配置文件 InputStream inputstream = Resources.getResourceAsStream("xxx.xml") SqlsessionFactory sqlsessionfactory = new SqlsessionF...

2020-06-07 19:41:11 46 0

原创 mybatis源码解析-getMapper

之前两篇文章: mybatis源码解析-SqlsessionFactory mybatis源码解析-获取Sqlsession 介绍了在mybatis运行中的前两步的执行过程和原理,继续摆出我们的demo: //1.通过输入流解析xml配置文件 InputStream inputstream = R...

2020-06-07 16:45:00 35 0

原创 mybatis源码解析-获取Sqlsession

上篇文章讲了mybatis是怎么创建SqlSessionFactory的:mybatis源码解析-SqlsessionFactory,简单来说就是通过构造模式读取xml配置文件封装到Configuration对象中,返回一个默认的DefaultSqlSessionFactory对象,需要注意的是我...

2020-06-07 16:12:00 29 0

原创 mybatis源码解析-SqlsessionFactory

我们通过hello world来调试mybatis源码,先写一段伪代码: //1.通过输入流解析xml配置文件 InputStream inputstream = Resources.getResourceAsStream("xxx.xml") SqlsessionFactor...

2020-06-07 10:20:35 42 0

原创 强引用,软引用,弱引用,虚引用

文章目录1.强引用2.软引用3.弱引用4.虚引用 JDK1.2之后,Java对引用的概念进行了扩充,将引用分为强引用,软引用,弱引用,虚引用4种,这四种引用强度依次逐渐减弱,除了强引用外,其他三种引用类型都在java,lang包下,可直接使用 简单介绍下四种引用: 强引用:类似Object o...

2020-05-27 20:26:46 55 0

原创 垃圾回收的并发和并行

与多线程同理,并行和并发在垃圾收集器可以做出如下解释: 并行(Parallel) 指多条垃圾收集线程并行工作,此时用户线程仍处于等待状态,此工作方式的垃圾收集器有:ParNew,Parallel,Scavenge, Parallel Old 串行(Serial) 单线程执行 并发(Concurr...

2020-05-27 16:10:38 78 0

原创 怎么理解内存溢出和内存泄漏

内存溢出(OOM) 内存溢出是引发程序崩溃的罪魁祸首之一,当应用程序内存增长速度非常快,造成的垃圾速度已经跟不上内存消耗的速度,容易出现内存溢出问题,大多数情况下,GC会进行各种年龄段的垃圾回收,实在不行了就触发Full GC,这时候会回收大量的内存,供程序继续使用 javadoc对OutOfM...

2020-05-27 15:37:41 72 0

原创 垃圾收集算法-如何判定对象死亡

在堆中存放着几乎所有的java对象实例,在GC执行垃圾回收之前,首先要区分出那些对象存活,哪些对象死亡,只有被标记为死亡的对象,GC才会在垃圾回收时释放其所占用的内存空间,这个过程被称为垃圾标记阶段 在jvm中,当一个对象已经不再被任何存活的对象继续引用时,就可以被宣判死亡,判断对象存活一般有两种...

2020-05-24 12:22:25 93 0

原创 字符串变量拼接底层原理

与字面量的字符串拼接不同,有变量的字符串拼接要复杂得多,非常有必要进行研究 public static void main(String[] args){ String s1 = "a"; String s2 = "b"; ...

2020-05-23 21:58:02 73 0

原创 jvm执行引擎:后端编译的运行过程和原理

文章目录1.概述2.解释器和编译器概述3.java是半编译半解释型语言3.1关于java跨平台性的补充4.HotSpot中的解释器和JIT编译器5.判断是否使用JIT编译器5.1方法调用计数器5.2热度衰减5.3设置程序执行方式6.JIT编译器分类 1.概述 jvm将java字节码文件转换为与当前...

2020-05-23 16:31:39 146 0

原创 jvm中对象是怎么存储的,对象的内存布局是怎样的

对象通过new,反射,clone等方式创建完毕后被存储到堆中,那么对象是以什么样的方式存储在堆中的? 对象的内存布局 对象在堆内存的内存布局主要有三部分,即对象头,实例数据,对其填充 对象头 对象头主要包含两部分的内容,一个叫运行时元数据(mark word),一个叫类型指针 1.运行时元数据:...

2020-05-23 09:40:33 95 0

原创 方法区的垃圾回收

在《java虚拟机规范》中,并没有强制要求堆方法区实现垃圾回收,不同落地实现的虚拟机可以选择实现或者不实现方法区的垃圾回收,要是不实现垃圾回收的话,那么方法区就成真正意义上的‘永久代’了,对于Hotspot虚拟机来说,它是实现了方法区的垃圾回收的 一般来说方法区的回收效果比较令人满意,尤其是类型的...

2020-05-22 22:39:23 82 0

原创 jvm-堆详解

文章目录1.堆概述2.堆内存细分2.1设置堆内存大小2.2新生代和老年代3.对象分配过程3.1对象分配特殊情况4.几种垃圾收集比较4.1Minor GC4.2Major GC4.3Full GC5.为什么要分代6.本地线程缓冲TLAB6.1为什么要有TLAB(Thread Local Alloca...

2020-05-22 17:08:27 54 0

原创 深入剖析ThreadLocal线程局部变量

文章目录1.简介2.每个线程的变量副本是存储在哪里的3.通过源码分析ThreadLocal具体实怎样工作的3.1set方法3.2get方法4.变量副本【每个线程中保存的那个map中的变量】是怎么声明和初始化的5.不同的线程局部变量,比如说声明了n个(n>=2)这样的线程局部变量threadl...

2020-05-21 22:38:13 56 0

原创 java并发-走近Callable和Future

1.Callable 与Runnable类似,可以执行线程,与Runnable不同的是,它不是调用run方法,而是调用call方法,可以抛出异常,并且有返回值: public interface Callable<V> { V call() throws Exception...

2020-05-21 21:26:39 44 0

原创 理解java并发中的线程池

文章目录1.线程池的出现 1.线程池的出现 任何程序的运行和都与要耗费资源,因为程序是在操作系统上运行的,涉及到与操作系统的交互,比如我们常用的数据库连接池,没有使用池化技术之前,每一个链接的创建和关闭都需要耗费资源,现在运用池化技术,将链接的创建关闭交给池统一处理,就可以达到节约资源,减少系统消...

2020-05-21 20:46:22 64 0

原创 java-反射与Class

文章目录1.动态语言概述2.Java反射机制概述3.Class类的理解3.1获取Class实例3.2获取运行时类的对象4.instanceof与Class等价性5.反射提供的功能及相关api6,反射的应用:动态代理 1.动态语言概述 java,c++被认为是传统意义上的静态语言,或者说是准动态语言...

2020-05-18 21:47:50 37 0

原创 深入理解Cookie作用机制

文章目录1.回顾2.Cookie跨域问题2.1跨域问题的引出2.2Cookie的域名2.3Cookie的路径2.4Cookie的安全属性 1.回顾 对于Cookie的基本知识即什么是Cookie可以看一下: JavaWeb-Cookie详解 这篇文章,都有详细介绍 2.Cookie跨域问题 2...

2020-05-10 11:42:51 49 0

原创 踩坑:阿里云oss上传图片报空指针异常

在做前后端分离项目的时候,要使用阿里云oss远程上传图片 @PostMapping("up") public R uploadOssFile(MultipartFile file){ //获取上传文件MultipartFile Str...

2020-05-06 16:29:11 121 0

原创 springboot报错无法读取配置文件:Could not resolve placeholder 'xxx' in value "${XXXX}

在springboot项目中,通过@Value("${aliyun.oss.file.endpoint}")读取application.properties配置文件的内容报错: org.springframework.beans.factory.BeanCreationExce...

2020-05-05 18:14:54 1149 0

原创 vue实例中template: App

官网的描述: 模板将会替换挂载的元素。挂载元素的内容都将被忽略 也就是说:template: ‘’ 表示用替换index.html里面的 举个例子: main.js: ------------------ import App from '@/App' new Vue({ ...

2020-05-03 10:36:10 82 0

原创 volatile内存解析

阅读本文需要熟悉java内存模型:Java内存模型-JMM解析 文章目录1.前言2.volatile的出现及特性3.volatile读写与happens-before的关系4.volatile读写内存定义实现,避免指令重排 1.前言 java内存模型规定了所有的变量都存储主内存,注意这里的主内存,...

2020-04-28 17:57:49 51 0

原创 Java内存模型-JMM解析

1.前言 在解析JMM之前,我们首先要明确,java并发编程说到底就是为了处理两个关键问题: 线程之间通信 线程之间同步 我们先简要概述一下,在彻底了解了java内存模型之后,我们可以往更深层次进行探究,那么开始: 线程通信指线程之间的信息交互,由于线程里的内容是线程私有的,所以必须通过一些...

2020-04-27 22:41:16 87 0

原创 java并发工具类:CountdownLatch,CyclicBarrier,Semaphore

在jdk开发包java.util.concurrent中提供了几个非常有用的并发工具类: CountdownLatch CyclivcBarrier Semaphore 接下来一一解释其特性和用法: 1.CountdownLatch 1.1介绍 这是jdk文档的相关介绍,简而言之就是: C...

2020-04-27 17:28:53 34 0

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