- 博客(29)
- 收藏
- 关注
原创 【Spring】事务的七大传播行为
1、 PROPAGATION_REQURED表示该方法必须运行在事务中,如果已经存在事务,就在当前事务中运行,如果没有事务,就开启一个新的事务。2、 PROPAGATION_SUPPORTS表示当前方法不需要运行在事务中,如果已经存在事务,就在当前事务中运行,如果没有事务,就非事务运行。3、 PROPAGATION_MANDATORY表示当前方法必须在事务中运行,如果已经存在事务,就在当...
2019-08-13 16:16:42
232
原创 【Linux】硬盘挂载
本次使用虚拟机模拟新增硬盘。1、虚拟机新增硬盘1)点击虚拟机–>设置2) 点击添加3)选择硬盘,点击下一步4)进行配置如下:2、重启Linux系统控制台输入reboot重启3、查看磁盘及其分区挂载情况从这里我们可以看到刚刚新添加的硬盘:sdb1 还未分区、格式化和挂载。4、分区输入分区数量及其他配置(这里按默认走):输入w保存退出,若不想保存输入...
2019-06-30 19:26:26
182
转载 【Java虚拟机】常见故障及故障原因
虚拟机中常见的故障及原因1、StackOverFlowError (栈溢出)当申请的栈的深度超过了虚拟机所允许的最大的栈的深度,就会报 StackOverFlowError。最常见的情况就是没有出口的递归:public static void main(String[] args) { stackOverFlow(); }public static void stackO...
2019-06-29 15:29:55
576
原创 【面试题精选】线程池底层工作原理
首先先放两张图,图片素材摘选自网络因为此篇文章涉及到线程池的七大参数,如果有不了解的可以移步程池的类型及常用参数及其作用线程池的工作原理上面两张图结合起来看我们就可以知道线程池的工作原理:当调用线程池的 execute() 方法时,线程池会做出以下判断:如果当前运行的线程小于线程池的核心线程数,那么马上创建线程完成这个任务。如果运行中的线程数大于等于线程池的核心线程数,那么将线...
2019-06-26 19:27:08
1110
原创 【Java虚拟机】虚拟机的逃逸分析
引子在网上看过这么一个面试题:Java中的创建对象一定是在Java堆中分配内存么?为什么?看完一脸懵逼,对象不是都在Java堆中?秉着面向百度编程的原则,我发现了一个新奇的概念:逃逸分析。逃逸分析首先我们了解什么是逃逸分析:逃逸分析的基本行为就是分析对象的动态作用域:当一个对象在方法中被定义后,它可能被外部的方法所引用,例如作为方法返回值或者被当作调用参数传入其他方法中,称为方法逃...
2019-06-23 20:11:43
409
原创 【深入理解Java虚拟机 第2版】资料分享
网盘链接:https://pan.baidu.com/s/1oLlKsOvi4nu-Xu6JCEeyvQ提取码:38go
2019-06-23 16:35:16
120
原创 【Java虚拟机】七大垃圾回收器详解(优缺点,适用场景)
垃圾回收器的优缺点与适用场景阅读本文前需要了解的知识点:垃圾回收中的并行与并发GC Root Tracing(可达性分析算法)一、Serial收集器特点: Serial收集器是最基本,发展例是最悠久的收集器。它是一个单线程收集器,即Serial收集器在工作时,必须暂停其他所有正在工作的线程,直到它的垃圾收集工作结束(即Stop The World)。Serial收集器到目前为止仍是虚...
2019-06-23 16:30:25
1527
原创 【SpringMVC】SpringMVC的工作流程详解
1、SpringMVC简介Spring MVC是一个基于Java的实现了MVC设计模式的请求驱动类型的轻量级Web框架,通过把Model,View,Controller分离,将web层进行职责解耦,把复杂的web应用分成逻辑清晰的几部分,简化开发,减少出错,方便组内开发人员之间的配合。2、SpringMVC的核心SpringMVC的核心是 DispatcherServlet 。正如它的名...
2019-06-22 11:23:22
386
原创 【SpringBoot】SpringBoot 2.x.x 版本 与 旧版本的区别
SpringBoot 2.x.x 版本 与 旧版本的区别学习SpringBoot时,跟视频上的版本不一致,有几处地方不一样,特此记录1、WebMvcConfigurerAdapter已过时在新版本的SpringBoot中,WebMvcConfigurerAdapter这个抽象类已经过时。因为SpringBoot的 2.0 及其以上版本最低支持Java 8,而Java 8 中有个新特性就是...
2019-06-21 16:43:19
10356
1
原创 【SpringBoot】SpringBoot自动配置原理
SpingBoot 自动配置原理解析SpringBoot框架可以对Spring以及SpringMVC进行自动配置,十分方便。最近研究了一下自动配置的原理,记录一下1、SpringBoot启动类SpringBoot有一个主配置类,即AutoconfigApplication类。SpringBoot在启动时会加载主配置类,开启了一些自动配置功能。@SpringBootApplicationp...
2019-06-19 11:18:05
229
原创 【Java虚拟机】垃圾回收算法
本文部分内容引用自 https://www.cnblogs.com/java-zhao/p/5183261.html1、三种垃圾回收算法标记-整理法(标记压缩)(老年代) 标记-清除法(老年代) 复制算法(新生代)1.1 标记-清除法原理:从根节点集合出发进行扫描,标记出存活的对象,最后扫描整个内存空间并清除没有标记的对象(即死亡对象)适用场景:对象存活比较多的情...
2019-05-20 21:07:31
404
1
原创 【Java虚拟机】垃圾收集前的准备
一、概述在JVM所管理的内存区域中,有三块区域是不需要垃圾回收的,他们是本地方法栈,Java虚拟机栈,程序计数器。因为这三块内存区域是线程独立的,随着线程的创建而创建,线程执行完毕自然就随着线程灭亡。而且这三块区域的内存大小是可在编译器就确定下来的,他们的内存分配和回收都具备确定性,因此就不需要考虑垃圾回收的问题。而Java堆不一样,程序只有在运行的时候才能知道应该创建多少对象,分配多少内存,...
2019-05-18 10:19:32
103
原创 【Java虚拟机】Java内存模型
Java内存模型-JMM1、JMM的概念Java内存模型,即JMM(java memory model),它是JVM的内存规范,定义了JVM的内存模型,它是屏蔽了各种硬件和操作系统的访问差异性,保证了Java程序在各个平台下对内存的访问都能效果一致的一种规范及机制。简而言之,JMM定义了JVM的内存模型,屏蔽了不同硬件和操作系统的差异性,它的主要目的是解决多线程通过共享内存进行通讯时,本地内...
2019-05-15 11:21:46
147
原创 【MyBatis框架】MyBatis底层原理----一次查询的工作流程
最近看了一些Mybatis的底层原理,特此记录总结。原文链接:https://blog.csdn.net/luanlouis/article/details/40422941MyBatis中相关的类及其职责类名职责SqlSession作为MyBatis工作的主要顶层API,表示和数据库交互的会话,完成必要数据库增删改查功能ExecutorMyBatis执行器,是...
2019-05-12 11:32:37
3271
原创 【Linux】Linux环境下安装jdk 12
安装步骤1、准备好jdk的压缩包注意不要下载错误,是linux版本的jdk,如果还未下载,可点击以下链接: 网盘下载 提取码:8fcz2、使用xftp将下载好的压缩包上传到Linux系统中的/usr/local文件夹内(可自行选择文件夹)3、解压压缩包在Xshell连接或linux系统中输入以下命令移动到解压包的目录中:cd /usr/local输入以下命令解压:tar -x...
2019-04-20 17:03:50
2372
原创 【面试题精选】并发编程常见面试题
1、什么是线程,什么是进程线程是操作系统能够进行运算调度的最小单位,它被包含在进程之中,是进程中的实际运作单位。进程是并发执行的程序在执行过程中分配和管理资源的基本单位,是一个动态概念,竞争计算机系统资源的基本单位。2、为什么会有线程?每个进程都有自己的地址空间,即进程空间,在网络或多用户换机下,一个服务器通常需要接收大量不确定数量用户的并发请求,为每一个请求都创建一个进程显然行不通(系统...
2019-04-15 19:41:24
412
原创 【Linux】Linux基本指令
Linux基本指令一、ls指令(1)用法1:ls含义:显示当前目录下的所有文件。(2)用法2:ls 路径(相对或绝对)含义:显示指定路径下的所有文件(3)用法3:ls -l 路径含义:以列表的的形式显示指定路径下的文件信息注意:第一列的字符代表该行文档的类型,“-”代表为文件,“d”代表为文件夹。(4)用法4:ls -la 路径(显示隐藏文档)含义:以列表形式显示指定路径...
2019-03-29 21:20:02
263
原创 【MySQL】关于MySQL索引的底层实现的问题解读
1、为什么不用Hash表作为索引?Hash表进行范围查询比较困难,如select * from sanguo where id >10;2、为什么不用平衡二叉树作为索引?虽然平衡二叉树支持范围查询,但是这这种数据结构要范围查找要往回找,即回溯到父结点,而B+树的 叶子结点的指针的效率则更高。3、为什么选择B树的一个结点存多个元素的结构?因为数据库的索引是存储在文件中的,而读取文件内...
2019-03-27 20:00:23
453
原创 【Spring框架】Spring配置大全(供备忘)
一、IOC配置1、xml配置bean:(1)构造器配置<bean id=”xx” class=”x.x.y”> <construction-arg name=”” value=””><construction-arg> <construction-arg name=”” value=””><construction-arg> ...
2019-03-27 08:46:55
683
原创 【面试题精选】二叉搜索树详解
一、二叉搜索树的概念及特点二叉搜索树(BLT):Binary Search Tree,又名二叉排序树,二叉查找树,是一种常见的二叉树类型。它是一棵空树或具有以下特点的二叉树:若任意结点的左子树不为空,那么左子树的任意结点的值均小于当前节点的值。若任意结点的右子树不为空,那么右子树的任意结点的值均大于当前节点的值。它的左右子树也均为二叉搜索树。中序遍历可以得到一个有序序列。树的物理结...
2019-03-15 21:11:01
539
原创 【面试题精选】Http与Https的区别及SSL安全协议解析
一、Http 和 Https 的相关概念Http: Hyper Text Transfer Protocol,即超文本传输协议。Http 协议是目前网络上应用最广泛的一种网络协议,所有的 www 文件都必须遵守这个协议,而Http在传输信息时,信息都是明文的格式,一些隐私信息很容易泄露,所以就有了Https。Https: Hyper Text Transfer Protocol Secure,...
2019-03-14 20:50:46
857
原创 【面试题精选】并发编程中可能存在的问题
并发编程中存在的问题在并发编程中,我们常常会遇到如下三个问题:原子性问题可见性问题有序性问题下面让我们先来了解一下这三个问题的基本概念。1、原子性: 一个操作或者一组操作(即一段代码)要么全部执行,并且执行过程中不会被其他因素打断,要么全部不执行。原子性的问题我们在MySQL的事务的四大特性里提到过,这里的概念跟MySQL的几乎相同。既然如此,我们就还拿常用的银行转账的实例来说明...
2019-03-13 20:46:35
206
原创 【面试题精选】创建线程的三种方式
Java使用Thread类代表线程,所有的线程对象都必须是Thread类或其子类的实例。Java可以用三种方式来创建线程,如下所示:1)继承Thread类创建线程2)实现Runnable接口创建线程3)使用Callable和Future创建线程下面让我们分别来看看这三种创建线程的方法。方法一:继承Thread类创建线程采用此方法创建线程有三个步骤:创建一个类继承Thread接口重...
2019-03-13 09:17:11
409
转载 【面试题精选】线程池的类型及常用参数及其作用
一、线程池的五种创建方式Executors目前提供了五种不同的线程池创建:类型描述new CachedThreadPool()它是一种用来处理大量短时间工作任务的线程池,具有几个鲜明特点:它会试图缓存线程并重用,当无缓存线程可用时,就会创建新的工作线程;如果线程闲置的时间超过60秒,则被终止并移出缓存;长时间闲置时,这种线程池并不会消耗什么资源,其内部使用Synchron...
2019-03-12 22:53:20
1672
原创 【面试题精选】Mysql数据库-事务
Mysql 中的事务,是面试官的考察点,下面让我们来详细了解一下事务。一、事务的基本概念事务:一个或一组sql语句组成的一个执行单元,这个执行单元要么全部执行,要么全部不执行。二、事务的四大特性(重点)1、原子性:事务是一个不可分割的单元,其中的操作要么全部执行,要么一个都不执行。2、隔离性:一个事务的执行不能被其他事务所干扰。3、一致性:事务必须使数据库从一个一致性状态变换成另一个一...
2019-03-09 16:23:36
494
原创 【面试题精选】TCP连接的三次握手和断开连接的四次挥手
今天大概看了一下这个知识点,用自己的语言来描述一下。TCP连接的三次握手准备:服务器首先创建一个传输控制块,并且使自己处于监听状态,等待客户端发来的请求第一次握手:客户端首先创建一个传输控制块TCB,然后向服务器发送一个连接请求报文段,这时报文段的SYN需要置为1,同时给自己分配一个序列号x,并且把seq置为x,同时ACK要置为1,ack要置为x+1,表示对客户端请求报文端的确认信息,发送给...
2019-03-09 15:55:28
407
原创 【面试题精选】Get和Post两种请求方式的区别
get和post两种请求方式大家并不陌生,而它们的区别是面试中常常提到的问题。下面就来详细介绍一个两者的区别。一、四种请求方式Http定义了四种不同的与服务器交互的方式,除了我们经常用到的Get,Post以外,还有Put和Delete。从名字就可以看出来,这四种请求方式分别对应着查,改,增,删四种操作。二、Get和Post的区别由此我们得到了Get和Post的第一条区别:Get方式一般用...
2019-03-09 15:37:22
797
转载 【面试题精选】拥塞控制详解
什么是拥塞控制?在了解拥塞控制之前,先理解一下什么是拥塞。拥塞: 即在某一时间段,若对网络对资源的需求超过了可用的资源数。网络的性能就要变坏。若网络中有许多资源同时呈现供应不足,网络的性能就要明显变坏,整个网络的吞吐量将随输入负荷的增大而下降。了解了拥塞,我们再来看看针对拥塞,所采用的拥塞控制。拥塞控制: 防止过多的数据注入到网络中,这样可以使网络中的路由器和链路不至过载。拥塞控制所要做的...
2019-03-07 16:32:23
1403
原创 【Spring框架】Spring核心知识点剖析(一)之IOC
Spring核心知识点剖析(一)之ICO最近刚开始接触Spring框架部分,写此博客记录学习内容。Spring的基本概念Spring:不管学过没学过,大家对Spring都有所了解。Spring是一款开放源码的Java框架,它致力于代码之间的松耦合。Spring是于2003 年兴起的一个轻量级的Java 开发框架,由Rod Johnson创建。简单来说,Spring是一个分层的JavaSE/...
2019-03-06 16:33:29
110
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人