自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

原创 MySQL JOIN语句算法原理浅析

引言 MySQL在执行Join语句时会根据当前语句和表结构选择不同类型的Join算法,下面将依次介绍这些算法,为了便于说明,建立t1,t2两张表,t1表插入了1000行数据,每一行的a=1001-id的值。也就是说,表t1中字段a是逆序的。同时,在表t2中插入了100万行数据,语句如下 cr...

2020-02-21 19:09:34

阅读数 34

评论数 0

原创 MySQL explain命令详解

使用explain + sql语句可以得到该条sql语句的执行计划,具体信息如下 下面将依次介绍每个字段的含义 id id表示在多表查询时,表的执行顺序,它是一组数字序列号,表示查询中执行select子句或操作表的顺序,其取值分为以下三种情况 1.id相同,表示表的执行顺序由上至下 ...

2020-02-13 18:38:42

阅读数 3253

评论数 2

原创 MySQL索引浅析

引言 索引可以提高数据的查询速度,它好比一本书的目录,通过目录我们可以快速找到需要的内容。在MySQL中,索引是在存储引擎层实现的,所以并没有统一的索引标准,即不同存储引擎的索引的工作方式并不一样。而即使多个存储引擎支持同一种类型的索引,其底层的实现也可能不同。由于InnoDB存储引擎在MySQ...

2020-02-12 13:22:10

阅读数 156

评论数 0

原创 MySQL逻辑架构简介

上图为MySQL逻辑架构图,从图中可以看到MySQL可以分为Server层和存储引擎层两部分。 Server层包括连接器、查询缓存、分析器、优化器、执行器等,涵盖MySQL的大多数核心服务功能,以及所有的内置函数(如日期、时间、数学和加密函数等),所有跨存储引擎的功能都在这一层实现,比如存储过程...

2020-02-11 15:49:08

阅读数 129

评论数 0

原创 设计模式之工厂模式

引言 工厂模式(Factory Pattern)是最常用的设计模式之一,它提供了一种创建对象的最佳方式。在工厂模式中,我们在创建对象时不会对客户端暴露创建逻辑,并且是通过使用一个共同的接口来指向新创建的对象。工厂模式可以分为三种:简单工厂模式,工厂方法模式,抽象工厂模式。我们以汽车工厂生产汽车为...

2019-09-03 15:28:51

阅读数 127

评论数 1

原创 RabbitMQ教程

一.安装 RabbitMQ使用Erlang语言编写,运行时需要依赖Erlang语言环境,安装RrabbitMQ前需要先安装Erlang,且两者的版本要配套。 Windows系统上安装成功后,只需在开始菜单点击RabbitMQ Service -start便可以启动RabbitMQ服务,Rabb...

2019-09-01 18:24:42

阅读数 168

评论数 0

转载 shell 之 sed 命令

本文转载自:shell 之 sed 命令(七) 拓展阅读: shell的sed命令 shell脚本之sed使用----替换、变量、转义字符 今天我们来学习下 shell 脚本中的sed命令。首先我们来看看 sed 的工作流程,它可以分为以下几步: 我们看到先是读入到一个模式空间中,然...

2019-07-16 11:22:58

阅读数 129

评论数 0

原创 JSON字符串包含空格时@RequestBody注解接收转换对象失败

当JSON字符串包含空格时,使用@RequestBody注解接收转换对象时会报如下错误: JSON parse error : Illegal unquoted character((CTRL-CHAR, code:10)) 解决方法是使用String对象来接受该json字符串,然后使用fas...

2019-07-02 15:47:02

阅读数 407

评论数 0

原创 Logback配置文件详解

<?xml version="1.0" encoding="UTF-8"?> <!-- scan: 当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。 scanPeriod: 设置监测配置文件是否有修改的时...

2019-06-26 16:13:34

阅读数 26

评论数 0

原创 JS代码踩坑记

今天心血来潮,突然想撸几行JS代码,没想到短短的几行代码居然出了BUG,代码如下: &lt;html&gt; &lt;head&gt; &lt;script type="text/javascript" src="j...

2018-12-19 21:48:39

阅读数 99

评论数 0

原创 Spring MVC+Spring+Mybatis框架整合流程

一.整合思路 Dao层 1.Mybatis核心配置文件SqlMapConfig.xml 2.applicationContext-dao.xml,配置数据库连接池信息、SqlSessionFactory会话工厂、配置mapper文件扫描 Service层 applicationConte...

2018-08-16 12:06:40

阅读数 128

评论数 0

原创 线程状态及转化

Java语言定义了5种线程状态,在任意一个时间节点中,一个线程只能有且只有其中一种状态,这5种状态分别是 1. 新建(NEW):新创建了一个线程对象,但还没有调用start()方法。 2. 运行(RUNNABLE):Java线程中将就绪(ready)和运行中(running)两种状态笼统的成为“...

2018-08-14 14:45:46

阅读数 51

评论数 0

原创 详解Synchronized关键字

synchronized是Java语言提供的同步控制关键字,下面我们看看它的具体用法  synchronized的三种应用方式 synchronized关键字最主要有以下3种应用方式 修饰实例方法,作用于当前实例加锁,进入同步代码前要获得当前实例的锁 修饰静态方法,作用于当前类...

2018-08-14 11:16:20

阅读数 82

评论数 0

原创 MySQL索引简介

一.引言 索引是数据库中最重要的概念之一,它的作用是为了提高数据的查询速度,索引好比一本词典的目录,通过这个“目录”便可以快速查找到你感兴趣的词语。 二.索引的数据结构 Mysql索引主要有两种结构:B+Tree索引和Hash索引。我们平常所说的索引,如果没有特别指明,一般都是指B树结构组织...

2018-08-10 11:53:28

阅读数 52

评论数 0

原创 TCP的三次握手与四次挥手

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,首先看下TCP报文的头部格式          源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序列号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 30...

2018-08-09 21:56:43

阅读数 77

评论数 0

原创 MySQL事务

一.事务及其特性 事务就是一个事情,组成这个事情可能有多个单元,要求这些单元,要么全都成功,要么全都不成功。在开发中,有事务的存在,可以保证数据完整性。 事务的特性(ACID): 原子性(Atomicity)原子性是指事务是一个不可分割的工作单位,事务中的操作要么都发生,要么都不发生。 一...

2018-08-08 15:00:50

阅读数 39

评论数 0

原创 Java集合框架概述

Java集合框架类图概览 上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Itera...

2018-07-26 20:59:57

阅读数 151

评论数 0

原创 当我们在浏览器地址栏输入一个URL,按下回车发生了什么?

一.浏览器解析出url中的域名 url由通信协议+域名+端口号+资源路径组成,浏览器需要从url中解析要请求的域名 二.DNS解析 找到域名对应的IP地址,该过程分为如下10步: 1.查询浏览器的DNS缓存 2.若浏览器缓存中未找到该域名对应的ip,则查找操作系统的DNS缓存,即host...

2018-07-25 16:40:34

阅读数 927

评论数 0

原创 JVM字节码执行引擎

概述        执行引擎是Java虚拟机最核心的组成部分之一,“虚拟机”是一个相对于“物理机”的概念,这两种机器都具有执行代码的能力。其区别是物理机的执行引擎是直接建立在处理器、硬件、指令集和操作系统层面上的,而虚拟机的执行引擎则是由自己实现的,因此可以自行制定指令集和执行引擎的结构体系,并且...

2018-06-16 21:08:50

阅读数 605

评论数 3

原创 JVM类加载器

概述        从上一篇博文中,我们知道,在类加载过程中的第一个阶段“加载”阶段需要完成的一个动作是:通过一个类的全限定名来获取定义此类的二进制字节流,而完成这个动作的代码模块便是“类加载器”。类加载器可以说是Java语言的一项创新,也是Java语言流行的重要原因之一,它最初是为了满足Java...

2018-06-08 20:07:02

阅读数 54

评论数 0

原创 JVM类加载机制

概述    虚拟机把描述类的数据从Class文件加载到内存,并对数据进行校验、转换解析和初始化,最终形成可以被虚拟机直接使用的Java类型,这就是虚拟机的类加载机制。与那些在编译时需要进行连接工作的语言不同,在Java中,类型的加载、连接和初始化过程都是在程序运行期间完成的,这种策略虽然会令类加载...

2018-06-06 16:10:17

阅读数 104

评论数 1

原创 Class文件详解

引言        众所周知,Java语言有一个很重要的特点是平台无关性,即用Java语言编写的程序可以在不同平台之间无缝迁移,Java对这个特性有一个著名的宣传口号:“一次编写,到处运行(Write Once,Run AnyWhere)”。Java能够实现平台无关性的原因是它在平台之上提供了一个...

2018-05-27 20:24:25

阅读数 2378

评论数 4

原创 Java内存区域

Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(Java SE7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示。 程序计数器 它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概...

2018-05-18 21:04:03

阅读数 50

评论数 0

原创 JVM内存垃圾收集

概述 垃圾收集(Garbage Collection)简称GC,这项技术最早诞生于1960年MIT的Lisp语言,Lisp是真正使用内存动态分配和垃圾收集技术的语言。当Lisp还在胚胎时期时,人们就在思考GC需要完成的三件事: 哪些内存需要回收? 什么时候回收? 如何回收? 经过半个多世纪...

2018-05-18 20:56:25

阅读数 115

评论数 1

原创 Java异常处理机制

一.Java中的异常类概述Java将程序中出现的异常情况封装成对象,用对象实例对异常情况进行描述。Java异常类层次结构图:从图中可以看出,所有的异常都是由Throwable继承而来,Throwable有两个直接子类:Error和Exception。Error是程序无法处理的错误,一般是Java运...

2018-05-11 12:04:20

阅读数 98

评论数 1

原创 接口与抽象类

一.接口使用关键字interface来定义一个接口,接口的定义和类的定义很相似,分为接口声明和接口体1.接口声明interface 接口名字2.接口体接口体中包含常量(使用final关键字修饰的变量)的定义和抽象方法的定义。接口中所有常量的访问权限必须是public,而且是static常量,允许省...

2018-05-10 14:43:15

阅读数 67

评论数 0

原创 Java类的初始化

类的初始化是一个Java类生命周期中的其中一个阶段。如下图所示:生命周期中的前五个阶段(加载、验证、准备、解析、初始化)是一个类在JVM中的完整加载过程。初始化是类加载的最后一个阶段,也正是在初始化阶段,才会真正开始执行类中所写的Java代码。Java虚拟机规范中严格规定了有且只有四种情况必须立即...

2018-04-26 15:32:24

阅读数 187

评论数 2

原创 SpringMVC框架ModelAndView踩坑记

最近在学习SpringMVC框架源码,为了方便学习,用Idea创建了一个SpringMVC项目,Idea提供了便捷的SpringMVC项目创建方式,就是在创建项目时勾选“Spring MVC”复选框,这样Idea会自动将SpingMVC需要的包导入项目中,导入成功后有一个jar包引起了我的注意,如...

2018-04-20 18:19:23

阅读数 1016

评论数 1

原创 Tomcat服务器部署应用的三种方式

Tomcat是java web开发中最常用的服务器,将开发好的web应用部署到Tomcat服务器通常有如下三种方式: (1)直接将web应用复制到Tomcat安装路径中的webapps目录下即可完成部署。 (2)不需要复制应用到webapps目录下,在conf目录下server.x...

2017-01-03 17:17:33

阅读数 553

评论数 0

原创 浅析Java的反射机制

1、JAVA反射机制是指,在程序运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。之所以能做到这一点,靠的是java中Class类,该类是用于描述字节码文件的类,通过该...

2016-11-17 10:37:42

阅读数 199

评论数 0

原创 关于Java中整数类型数据的取值范围

要想分析数据的取值范围,首先应该明确两点:1.java中的数值型数据都是符号数,符号数由符号位和数值位两部分组成,符号位都是用0表示正数,用1表示负数2.java中是以补码来表示数值数据的,正数的补码是其本身,负数的补码是该数绝对值按位取反后再加1。所谓补码就是将二进制位取反再加1,比如二进制数0...

2016-10-30 21:53:15

阅读数 403

评论数 0

原创 浅析java.lang.Class类及其对象

1.Class类及其对象简介 Class类位于java.lang包中,父类是Object,该类的对象表示正在运行的 Java 应用程序中的类和接口。Class 类没有公共构造方法,Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的 defineClass 方法自动构造的。通俗...

2016-10-10 16:38:17

阅读数 220

评论数 1

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