自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(34)
  • 资源 (1)
  • 收藏
  • 关注

原创 多线程交替打印问题

需求:让两个线程交替打印数字123和字母abc代码示例:public class ThreadJoinTest { static class ThreadPrint implements Runnable { private Object lock; private String printStr; private int printCount; public ThreadPrint(Object lock, String

2022-02-11 15:19:30 435

原创 idea插件神器

Easy Code代码生成工具Mybatis Log Plugins sql语句生成MybatisX mapper与xml快捷跳转RestfulToolKit url快速定位到方法Translation 在线翻译

2020-12-08 17:09:36 220

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

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

2020-02-21 19:09:34 360

原创 MySQL explain命令详解

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

2020-02-13 18:38:42 6121 3

原创 MySQL索引浅析

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

2020-02-12 13:22:10 451

原创 MySQL逻辑架构简介

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

2020-02-11 15:49:08 484

原创 设计模式之工厂模式

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

2019-09-03 15:28:51 304 1

原创 RabbitMQ教程

一.安装RabbitMQ使用Erlang语言编写,运行时需要依赖Erlang语言环境,安装RrabbitMQ前需要先安装Erlang,且两者的版本要配套。Windows系统上安装成功后,只需在开始菜单点击RabbitMQ Service -start便可以启动RabbitMQ服务,RabbitMQ提供了web页面对其服务进行可视化管理,要使用web界面需要在RabbitMQ的安装目录下执行...

2019-09-01 18:24:42 653

转载 shell 之 sed 命令

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

2019-07-16 11:22:58 572

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

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

2019-07-02 15:47:02 3224

原创 Logback配置文件详解

<?xml version="1.0" encoding="UTF-8"?><!--scan:当此属性设置为true时,配置文件如果发生改变,将会被重新加载,默认值为true。scanPeriod:设置监测配置文件是否有修改的时间间隔,如果没有给出时间单位,默认单位是毫秒。当scan为true时,此属性生效。默认的时间间隔为1分钟。debug:当此属性设置为t...

2019-06-26 16:13:34 285

原创 JS代码踩坑记

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

2018-12-19 21:48:39 246

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

一.整合思路Dao层1.Mybatis核心配置文件SqlMapConfig.xml2.applicationContext-dao.xml,配置数据库连接池信息、SqlSessionFactory会话工厂、配置mapper文件扫描Service层applicationContext-service.xml中配置包扫描器,扫描@Service注解的类和事务Controller...

2018-08-16 12:06:40 416

原创 线程状态及转化

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

2018-08-14 14:45:46 171

原创 详解Synchronized关键字

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

2018-08-14 11:16:20 234

原创 MySQL索引简介

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

2018-08-10 11:53:28 171

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

TCP/IP协议中,TCP协议提供可靠的连接服务,采用三次握手建立一个连接,首先看下TCP报文的头部格式        源端口和目的端口,各占2个字节,分别写入源端口和目的端口; 序列号,占4个字节,TCP连接中传送的字节流中的每个字节都按顺序编号。例如,一段报文的序号字段值是 301 ,而携带的数据共有100字段,显然下一个报文段(如果还有的话)的数据序号应该从401开始; 确认...

2018-08-09 21:56:43 206

原创 MySQL事务

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

2018-08-08 15:00:50 164

原创 Java集合框架概述

Java集合框架类图概览上述类图中,实线边框的是实现类,比如ArrayList,LinkedList,HashMap等,折线边框的是抽象类,比如AbstractCollection,AbstractList,AbstractMap等,而点线边框的是接口,比如Collection,Iterator,List等。Java集合可以被分为两大类,一类是单列集合,这类集合的根接口是Collect...

2018-07-26 20:59:57 500

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

一.浏览器解析出url中的域名url由通信协议+域名+端口号+资源路径组成,浏览器需要从url中解析要请求的域名二.DNS解析找到域名对应的IP地址,该过程分为如下10步:1.查询浏览器的DNS缓存2.若浏览器缓存中未找到该域名对应的ip,则查找操作系统的DNS缓存,即hosts文件中的域名与ip的映射关系3.若在操作系统缓存中也没有找到,则查找本地DNS服务器缓存。4...

2018-07-25 16:40:34 3576 1

原创 JVM字节码执行引擎

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

2018-06-16 21:08:50 2997 4

原创 JVM类加载器

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

2018-06-08 20:07:02 207

原创 JVM类加载机制

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

2018-06-06 16:10:17 247 1

原创 Class文件详解

引言        众所周知,Java语言有一个很重要的特点是平台无关性,即用Java语言编写的程序可以在不同平台之间无缝迁移,Java对这个特性有一个著名的宣传口号:“一次编写,到处运行(Write Once,Run AnyWhere)”。Java能够实现平台无关性的原因是它在平台之上提供了一个Java运行环境,也就是JVM,Sun公司以及其他虚拟机提供商发布了许多可以运行在各种不同平台上的虚拟...

2018-05-27 20:24:25 13727 6

原创 Java内存区域

Java虚拟机在执行Java程序的过程中会把它管理的内存划分为若干个不同的数据区域。根据《Java虚拟机规范(Java SE7版)》的规定,Java虚拟机所管理的内存将会包括以下几个运行时数据区域,如下图所示。程序计数器它的作用可以看做是当前线程所执行的字节码的行号指示器。在虚拟机的概念模型里(仅是概念模型,各种虚拟机可能会通过一些更高效的方式去实现),字节码解释器工作时就是通过改变这...

2018-05-18 21:04:03 158

原创 JVM内存垃圾收集

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

2018-05-18 20:56:25 265 1

原创 Java异常处理机制

一.Java中的异常类概述Java将程序中出现的异常情况封装成对象,用对象实例对异常情况进行描述。Java异常类层次结构图:从图中可以看出,所有的异常都是由Throwable继承而来,Throwable有两个直接子类:Error和Exception。Error是程序无法处理的错误,一般是Java运行时系统的内部错误和资源耗尽错误。例如Java虚拟机错误。出现这类错误,会导致程序的终止,无法对这类错...

2018-05-11 12:04:20 295 1

原创 接口与抽象类

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

2018-05-10 14:43:15 201

原创 Java类的初始化

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

2018-04-26 15:32:24 1000 2

原创 SpringMVC框架ModelAndView踩坑记

最近在学习SpringMVC框架源码,为了方便学习,用Idea创建了一个SpringMVC项目,Idea提供了便捷的SpringMVC项目创建方式,就是在创建项目时勾选“Spring MVC”复选框,这样Idea会自动将SpingMVC需要的包导入项目中,导入成功后有一个jar包引起了我的注意,如下:spring-webmvc-portlet.jar。我之前手动导入或通过maven依赖引入Spri...

2018-04-20 18:19:23 2217 1

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

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

2017-01-03 17:17:33 957

原创 浅析Java的反射机制

1、JAVA反射机制是指,在程序运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;这种动态获取信息以及动态调用对象方法的功能称为java语言的反射机制。之所以能做到这一点,靠的是java中Class类,该类是用于描述字节码文件的类,通过该类的实例化对象可以得到该对象所表示的类的所有信息,包括类中的构造器,字段,以及类方法。因此简单来说,反

2016-11-17 10:37:42 377

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

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

2016-10-30 21:53:15 1017

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

1.Class类及其对象简介Class类位于java.lang包中,父类是Object,该类的对象表示正在运行的 Java 应用程序中的类和接口。Class 类没有公共构造方法,Class 对象是在加载类时由 Java 虚拟机以及通过调用类加载器中的defineClass 方法自动构造的。通俗来讲就是JVM会为每一个被加载的类创建一个对应的对象(即字节码文件在jvm中也是以对象的形式被jv

2016-10-10 16:38:17 583 1

应用密码学 胡向东版 电子课件

应用密码学 胡向东版 电子课件

2017-02-28

空空如也

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

TA关注的人

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