27个常见的MySQL服务器参数配置 充分理解 MySQL 配置文件中各个变量的意义对我们有针对性的优化 MySQL 数据库性能有非常大的意义。通常我们需要根据不同的数据量级,不同的生产环境情况对MySQ配置文件进行优化
详解synchronized锁升级过程 1.概述Java内置锁的状态总共有4种状态,级别由低到高依次为:无锁、偏向锁、轻量级锁和重量级锁。其实在JDK 1.6之前,Java内置锁还是一个重量级锁,是一个效率比较低下的锁,在JDK 1.6之后,JVM为了提高锁的获取与释放效率,对synchronized的实现进行了优化,引入了偏向锁和轻量级锁,从此以后Java内置锁的状态就有了4种(无锁、偏向锁、轻量级锁和重量级锁),并且4种状态会随着竞争的情况逐渐升级,而且是不可逆的过程,即不可降级,也就是说只能进行锁升级(从低级别到高级别)2.锁升级演变
Spring 事件机制总结 1.Spring事件类型 在Spring中,事件是由org.springframework.context.ApplicationEvent实例来表示的,这个抽象类继承扩展了java.util.EventObject,可以使用EventObject中的getSource方法,我们可以很容易地获得所发生的给定事件的对象;在Spring应用中,事件主要分为两大类型,容器生命周期相关和请求过程相关,如下,为ApplicationEvent相关的UML图,通过子类基础
Spring5.1源码编译 1.下载源码下载地址:https://github.com/spring-projects/spring-framework/tree/5.1.x 点击“clone or download” 按钮下载源码 下载完成后解压,如上所示。2.安装gradle并配置阿里云镜像下载gradle:https://downloads.gradle-dn.com/distributions/g
再见,Navicat!DataGrip 真香 DataGrip 版是由 JetBrains 公司(就是那个出品 Intellij IDEA 的公司)推出的数据库管理软件。如果你不爱折腾的话,这家公司出品的很多 IDE 都是你的最佳选择,比如你进行 Python 开发的可以选择 JetBrains 全家桶中的 PyCharm 。 DataGrip 支持几乎所有主流的关系数据库产品,如 DB2、Derby、H2、MySQL、Orac.
Elasticsearch kibana IK分词器安装教程 一:安装ES(1)安装JDK环境变量export JAVA_HOME=/usr/local/jdk1.8.0_181export PATH=$JAVA_HOME/bin:$PATHexport CLASSPATH=$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profile(2).下载elasticsearch安装...
SpringBoot内嵌Tomcat原理剖析 1.嵌入式Tomcat 懂得SpringBoot的童鞋应该很清楚,对于SpringBoot应用来说,不管应用程序是属于何种类型,都是一个Main方法走遍天下,而且对于web应用,只需要引入spring-boot-starter-web中这个依赖,应用程序就好像直接给我们来了个tomcat一样,其实,这里并不是SpringBoot团队里面有什么骚操...
MyBatis核心处理层:MyBatis初始化流程补充(动态sql解析) 1:概述 在写完MyBaits核心处理层时,总感觉对于动态sql语句的解析没有写清楚,所以对于SqlNode,SqlSource这两个类相关的东西再写一篇博客,也算是对MyBatis源码的相关知识点的一次回顾,童鞋在看完这篇的时候,可以再回顾一下MyBatis初始化流程下,可能对sql语句解析的章节理解起来更容易。其实SqlNode和SqlSo...
MyBatis源码核心处理层:MyBatis初始化流程下 1:概述 接着上篇文章MyBatis初始化流程上,我们继续分析MyBatis的初始化流程,上篇文章讲解到映射文件的解析,本篇我们接着分析MyBatis是如何解析我们自己编写的mapper文件的,整个过程可能比较复杂,涉及到的知识点也比较多,如动态语句的解析,resultMap 节点解析,二级缓存,mapper文件与DAO的绑定,虽然比较复杂,但是耐心...
MyBatis源码核心处理层:MyBatis初始化流程上 1 概述 在学习完MyBatis的基础模块之后,我们就正式进入主题,开始分析MyBatis的初始化流程,对于MyBatis的初始化流程,涉及到的知识点比较多,如各种配置的初始化,映射文件的解析,特别是映射文件的解析比较麻烦,所以对于MyBatis的初始化流程,将分为两篇文章进行解析,本篇只分析配置的初始化,对于映射...
MyBatis源码四基础层:日志模块 1. 概述: 在 Java 开发中常用的日志框架有 Log4j 、 Log4j2 、 Apache Commons Log 、java.util.logging.slfj等,这些工具对外的接口不尽相同。为了统一这些工具的接口, MyBatis 定义了 一套统一的日志接口供上层使用 ;在MyBatis的日志模块中,用到了常用的设计模式适配器模式,...
MyBatis源码一基础层:解析器模块 1.概述 解析器模块是 MyBatis 基础支持层的功能, 如图1所示,基础支持层位于MyBatis 整体架构的最底层,支撑着 MyBatis 的核心处理层,是整个框架的基石。基础支持层中封装了多个较为通用的、独立的模块,不仅仅为 MyBatis 提供基础支撑 ,也可以在合适的场景中直接复用 ,如反射模...
从源码了解dubbo远程服务暴露过程 1简介 本篇文章,我们来研究一下 Dubbo 导出服务的过程,文章主要是从Spring解析dubbo自定义标签为入口,概括性的整理出dubbo是怎么进行服务暴露的,当然,对于inJvm协议的暴露,本篇就不会概述,如果对Spring自定义标签不熟的读者,可参考博主之前写的文章Spring自定义标签,该文章对Sprin...
AQS(AbstractQueuedSynchronizer)抽象队列同步器 1.AQS概述AQS,AbstractQueuedSynchronizer,即队列同步器。它是构建锁或者其他同步组件的基础框架(如ReentrantLock、ReentrantReadWriteLock、Semaphore等),JUC并发包的作者(Doug Lea)期望它能够成为实现大部分同步需求的基础。它是JUC并发包中的核心基础组件,相比synchronized,synchronized缺少...
dubbo扩展机制SPI(一) 1.JDK内置SPI机制1.1 概述 SPI 全称为 Service Provider Interface),是JDK内置的一种服务提供发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。1.2 约定在META-INF/services/目录中创建以...
JUC-CopyOnWriteArrayList源码学习 1.概述 JUC包下的并发List只有CopyOnWriteArrayList。该arrayList是线程安全的arrayList,对其修改的操作都是都是在一个副本数组进行的,也即是采用写时复制的策略。如图1为该类的继续关系,在开始阅读CopyOnWriteArrayList的时候,不妨大家可以思考一下,假如自己写...
Spring源码——ApplicationContext相关接口架构分析 用过Spring的童鞋都知道,BeanFactory 是Spring最重要的最简单的Bean容器,但是由于BeanFactory 过于简单,所以它并不适合实际应用的企业级开发,因此,Spring提供了另外的一套Bean容器管理的体系-ApplicationContext体系。1.Application...
spring源码之-import标签解析 1.Import标签示例 在SpringBoot之前,Spring配置文件的小伙伴都知道,配置文件的维护会让人觉得恐怖,如果配置文件太多,所有配置都放在一个 spring.xml 配置文件中,那么这个文件就会变得很臃肿,所有针对这种情况 ,Spring 提供了一个分模块的思路,利用 import 标签,可以将各个不...