H__D  
05 2021 档案
  • 【Java】基于NIO的聊天室
    摘要:一、聊天室结构图 二、代码 package com.demo; import org.junit.Test; import java.io.*; import java.net.InetAddress; import java.net.InetSocketAddress; import java.n 阅读全文
    posted @ 2021-05-31 19:26 H__D 阅读(303) 评论(0) 推荐(0) 编辑
  • 【Java】基于BIO的聊天室
    摘要:一、聊天室结构图 二、代码 1 package com.demo; 2 3 import org.junit.Test; 4 5 import java.io.*; 6 import java.net.InetAddress; 7 import java.net.InetSocketAddress; 阅读全文
    posted @ 2021-05-31 01:50 H__D 阅读(148) 评论(0) 推荐(0) 编辑
  • 【ZooKeeper】ZooKeeper源码编译
    摘要:环境准备 Maven:3.6.3 Jdk:1.8.0_181 idea:2021.1.1 Community Edition(社区版) 1、下载ZooKeeper源码 官网地址:https://github.com/apache/zookeeper 选择需要的版本下载。 本例下载的是 release 阅读全文
    posted @ 2021-05-26 19:40 H__D 阅读(1390) 评论(0) 推荐(0) 编辑
  • 【SpringBoot】 使用外部Tomcat方法及启动原理
    摘要:SpringBoot 使用外部Tomcat方法及启动原理 基于 SpringBoot 2.x 方法 一、必须是一个war项目,利用IDEA可以直接创建,或者是修改pom.xml文件 <packaging>war</packaging> 1 二、将内置Tomcat的作用范围修改成provided de 阅读全文
    posted @ 2021-05-21 22:56 H__D 阅读(707) 评论(0) 推荐(0) 编辑
  • 【Java】深入理解SPI机制
    摘要:一、什么是SPI SPI ,全称为 Service Provider Interface,是一种服务发现机制。它通过在ClassPath路径下的META-INF/services文件夹查找文件,自动加载文件里所定义的类。 这一机制为很多框架扩展提供了可能,比如在Dubbo、JDBC中都使用到了SPI 阅读全文
    posted @ 2021-05-21 22:54 H__D 阅读(469) 评论(0) 推荐(0) 编辑
  • 【SpringBoot】SpringBoot 自动配置原理
    摘要:自动配置原理分析从@SpringBootApplication注解开始,本章使用的SpringBoot版本是2.2.5 一、@SpringBootApplication注解 @SpringBootApplication注解包括了@SpringBootConfiguration、@EnableAuto 阅读全文
    posted @ 2021-05-21 22:49 H__D 阅读(148) 评论(0) 推荐(1) 编辑
  • 【SpringBoot】SpringBoot 启动原理图
    摘要:本章使用的SpringBoot版本是 2.2.5 一、SpringBoot项目启动图 详细过程参考:【SpringBoot】SpringBoot 启动原理(十五) 二、SpringBoot Web项目启动图 阅读全文
    posted @ 2021-05-21 22:29 H__D 阅读(588) 评论(0) 推荐(0) 编辑
  • 【Redis】缓存穿透、缓存击穿、缓存雪崩区别和解决方案
    摘要:一、缓存处理流程 前台请求,后台先从缓存中取数据,取到直接返回结果,取不到时从数据库中取,数据库取到更新缓存,并返回结果,数据库也没取到,那直接返回空结果。 二、缓存雪崩 描述: 缓存雪崩是指缓存中数据大批量到过期时间,而查询数据量巨大,引起数据库压力过大甚至down机。和缓存击穿不同的是, 缓存击 阅读全文
    posted @ 2021-05-19 22:40 H__D 阅读(271) 评论(0) 推荐(0) 编辑
  • 【Redis】Redis 的5种基础数据结构和3种高级数据结构
    摘要:2019独角兽企业重金招聘Python工程师标准>>> Redis有5个基本数据结构,string、list、hash、set和zset。它们是日常开发中使用频率非常高应用最为广泛的数据结构,把这5个数据结构都吃透了,你就掌握了Redis应用知识的一半了。 string 首先我们从string谈起。 阅读全文
    posted @ 2021-05-19 22:32 H__D 阅读(410) 评论(0) 推荐(0) 编辑
  • 【SpringBoot】SpringBoot源码编译
    摘要:SpringBoot官网:https://github.com/spring-projects/spring-boot SpringBoot项目在2.3.0之前是使用Maven构建项目的,在2.3.0之后是使用Gradle构建项目了 本章将介绍2种方式的源码编译构建 SpringBoot-2.2.5 阅读全文
    posted @ 2021-05-16 23:09 H__D 阅读(4973) 评论(0) 推荐(0) 编辑
  • 【Redis】分布式锁之Redis实现
    摘要:Redission分布式锁原理 加锁过程 解锁过程 在Java中,关于锁我想大家都很熟悉。在并发编程中,我们通过锁,来避免由于竞争而造成的数据不一致问题。通常,我们以synchronized 、Lock来使用它。 但是Java中的锁,只能保证在同一个JVM进程内中执行。如果在分布式集群环境下呢? 一 阅读全文
    posted @ 2021-05-16 12:19 H__D 阅读(258) 评论(0) 推荐(0) 编辑
  • 【Redis】手写Redis客户端
    摘要:基于理解了RESP原理的基础上,手写一个Redis客户端,实现一个自己的Jedis(mini版)。 RESP参考:【Redis】Redis序列化协议(RESP) 一、简洁版Jedis 分析 1、建立连接 SimpleJedis的构造方法,完成建立连接; 我们平时使用Jedis时,其实本质也是一样的实 阅读全文
    posted @ 2021-05-15 19:11 H__D 阅读(237) 评论(0) 推荐(0) 编辑
  • 【Redis】Redis序列化协议(RESP)
    摘要:Redis的通信协议是什么。就是客户端与服务端按照双方约定的规则来进行的编码方式,客户端将要发送的命令进行编码,然后服务端收到后,使用同样的协议进行解码,服务端处理完成后,再次编码返回给客户端,客户端解码拿到返回结果,这样就完成了一次通信。 官网文档:https://redis.io/topics/ 阅读全文
    posted @ 2021-05-15 18:45 H__D 阅读(869) 评论(0) 推荐(0) 编辑
  • 【Redis】Redis Cluster集群之水平扩展
    摘要:一、环境 与 Redis集群查看 在同一台机器上存在6个节点的Redis集群,6个分别是 16379(主节点)、16380(主节点)、16381(主节点)、16382(从节点)、16383(从节点)、16384(从节点) 1、查看redis集群的命令帮助 [root@H__D soft]# redi 阅读全文
    posted @ 2021-05-15 00:31 H__D 阅读(215) 评论(0) 推荐(0) 编辑
  • 【Gradle】maven-publish插件的使用
    摘要:一、maven-publish介绍 在 Gradle 1.3 中,引入了一种新的发布机制。这种新机制引入了一些新概念和功能,这些功能使 Gradle 发布变得更加强大,现在已成为发布工件的首选选项。 二、maven-publish使用 1、在 build.gradle 声明插件 plugins { 阅读全文
    posted @ 2021-05-14 15:37 H__D 阅读(13272) 评论(0) 推荐(1) 编辑
  • 【Mysql】Mysql隐藏字段(rowid)
    摘要:相关免费学习推荐:mysql视频教程 通过我自己的一番实战,可以确定的是,只要创建表,这个rowid一定是存在的,唯一区别就是显示和隐士的区别,也就是是否可以通过select _rowid from table查询出来 那么问题来了,哪些情况下rowid是显示的? 1 、当表中有主键并且是数值型的时 阅读全文
    posted @ 2021-05-13 13:47 H__D 阅读(6539) 评论(0) 推荐(0) 编辑
  • 【Gradle】快速入门
    摘要:一、Gradle简介 Gradle是源于Apache Ant和Apache Maven概念的项目自动化构建开源工具,它使用一种基于Groovy的特定领域语言(DSL)来声明项目设置,抛弃了基于XML的各种繁琐配置面向Java应用为主。当前其支持的语言暂时有Java、Groovy、Kotlin和Sca 阅读全文
    posted @ 2021-05-13 01:12 H__D 阅读(266) 评论(0) 推荐(0) 编辑
  • 【Redis】Redis基础数据类型与常用命令
    摘要:一、Redis 基础数据类型 Redis 有 5 种基础数据类型,分别为:string (字符串)、list (列表)、set (集合)、hash (哈希) 和 zset (有序集合)。 1、string (字符串) 字符串 string 是 Redis 最简单的数据结构。Redis 所有的数据结构 阅读全文
    posted @ 2021-05-12 21:36 H__D 阅读(117) 评论(0) 推荐(0) 编辑
  • 【Mybatis】Mybatis整合Spring实现原理
    摘要:一、Mybatis整合Spring使用 1、mybatis-spring源码编译参考:【Mybatis】mybatis-spring源码编译 二、Mybatis整合Spring原理 1、Mybatis整合Spring相关类的类图 2、Mybatis整合Spring执行过程 分析执行过程代码 1 pu 阅读全文
    posted @ 2021-05-11 22:39 H__D 阅读(271) 评论(0) 推荐(0) 编辑
  • 【Mybatis】Mybatis实现原理
    摘要:一、Mybatis使用 1、Mybatis源码编译参考:【Mybatis】MyBatis源码编译 2、Mybatis使用参考:【Mybatis】MyBatis快速入门(一) 二、Mybatis原理 1、Mybatis相关类的类图 2、Mybatis执行过程 分析过程代码 1 @Test 2 publ 阅读全文
    posted @ 2021-05-11 22:31 H__D 阅读(158) 评论(0) 推荐(0) 编辑
  • 【Mybatis】mybatis-spring源码编译
    摘要:本章介绍Mybatis与Spring整合的mybatis-spring.jar的编译,阅读本章前,现看 【Spring】Spring源码编译 和 【Mybatis】MyBatis源码编译 环境准备 Maven:3.6.3 Jdk:1.8.0_181 idea 1、下载mybatis-spring源码 阅读全文
    posted @ 2021-05-07 22:22 H__D 阅读(417) 评论(0) 推荐(0) 编辑
  • 【Java】class.jar和sources.jar及javadoc.jar 三种jar包
    摘要:一、普及jar包知识 例如(举例子解释) 类文件(.class) test-java-1.0-SNAPSHOT.jar 文档包(API) test-java-1.0-SNAPSHOT-javadoc.jar 资源包(code) test-java-1.0-SNAPSHOT-sources.jar 二 阅读全文
    posted @ 2021-05-07 15:41 H__D 阅读(2176) 评论(0) 推荐(0) 编辑
  • 【Spring】Spring源码编译
    摘要:环境准备 Gradle:5.6.4(类似Maven构建工具) Jdk:1.8.0_181 idea:2021.1.1 Community Edition(社区版) 1、下载Spring源码 官网地址:https://github.com/spring-projects/spring-framewor 阅读全文
    posted @ 2021-05-07 01:21 H__D 阅读(591) 评论(0) 推荐(0) 编辑
  • 【Mysql】Mysql常见的日志种类及作用
    摘要:MySQL中有以下日志文件,分别是: 1:错误日志(errorlog) 2:一般查询日志(general log) 3:慢查询日志(slow query log) 4:二进制日志(binlog) 5:中继日志(relay log) 6:重做日志(redo log) 7:回滚日志(undo log) 阅读全文
    posted @ 2021-05-05 15:55 H__D 阅读(2185) 评论(0) 推荐(0) 编辑
  • 【Mysql】执行sql的过程
    摘要:前言:MySQL在我们的开发中基本每天都要面对的,作为开发中的数据中间件,MySQL承担者存储数据和读写数据的职责。因为学习和了解MySQL是至关重要的,那么当我们在客户端发起一个sql到出现详细的查询数据,这其中究竟经历了什么样的过程?MySQL服务端是如何处理请求的,又是如何执行sql语句的?本 阅读全文
    posted @ 2021-05-05 14:22 H__D 阅读(276) 评论(0) 推荐(0) 编辑
  • 【Mysql】回表查询原理,利用联合索引实现索引覆盖
    摘要:一、什么是回表查询? 这先要从InnoDB的索引实现说起,InnoDB有两大类索引: 聚集索引(clustered index) 普通索引(secondary index) InnoDB聚集索引和普通索引有什么差异? InnoDB聚集索引的叶子节点存储行记录,因此, InnoDB必须要有,且只有一个 阅读全文
    posted @ 2021-05-04 15:29 H__D 阅读(246) 评论(0) 推荐(0) 编辑
  • 【Mysql】explain详解与索引最佳实践
    摘要:使用EXPLAIN关键字可以模拟优化器执行SQL语句,分析你的查询语句或是结构的性能瓶颈; 在 select 语句之前增加 explain 关键字,MySQL 会在查询上设置一个标记,执行查询会返回执行计划的信息,而不是执行这条SQL; 注意:如果 from 中包含子查询,仍会执行该子查询,将结果放 阅读全文
    posted @ 2021-05-04 15:25 H__D 阅读(210) 评论(0) 推荐(0) 编辑
  • 【Mybatis】MyBatis源码编译
    摘要:环境准备 Maven:3.6.3 Jdk:1.8.0_181 idea 1、下载mybatis源码 官网地址:https://github.com/mybatis/mybatis-3 选择需要的版本下载。 本例下载的是 mybatis-3-mybatis-3.5.1,下载完后解压。打开pom.xml 阅读全文
    posted @ 2021-05-04 00:17 H__D 阅读(1397) 评论(1) 推荐(1) 编辑
  • 【Mysql】MySQL数据存储文件详解
    摘要:一、MySQL数据存放位置 MySQL数据库会在data目录下,以数据库为名,为每一个数据库建立文件夹,用来存储数据库中的表文件数据。 不同的数据库引擎,每个表的扩展名也不一样 ,例如: MyISAM用“.MYD”作为扩展名,Innodb用“.ibd”等。 二、MySQL数据介绍 1、".FRM"  阅读全文
    posted @ 2021-05-02 19:36 H__D 阅读(3337) 评论(0) 推荐(0) 编辑
  • 【Mysql】索引数据结构详解
    摘要:预备知识 1、【算法】红黑树原理和算法介绍 2、【算法】B树、B+树详解 MySQL索引数据结构详解 参考:https://blog.csdn.net/nihaoa50/article/details/90212833 MySQL聚集索引与非聚集索引 1、InnoDB引擎 聚集索引中,B+树的叶子节 阅读全文
    posted @ 2021-05-02 18:11 H__D 阅读(167) 评论(0) 推荐(0) 编辑
  • 【Spring】手写 SpringMVC 框架(十九)
    摘要:参考:https://blog.csdn.net/qq_22130209/article/details/109239242 参考:https://blog.csdn.net/litianxiang_kaola/article/details/86646947 阅读全文
    posted @ 2021-05-02 00:45 H__D 阅读(60) 评论(0) 推荐(0) 编辑
  • 【Spring】SpringMVC 实现原理(十八)
    摘要:一、SpringMVC 初始化 初始化过程和Web容器初始化过程一样,参考:【Spring】Web容器初始化过程(十七) 具体初始化分析 由上图可知 1、ContextLoaderListener 上下文加载监听器初始化的时候,会初始化Spring容器,对应的配置文件就是Spring的配置文件,主要 阅读全文
    posted @ 2021-05-02 00:38 H__D 阅读(75) 评论(0) 推荐(0) 编辑
  • 【Spring】Web容器初始化过程(十七)
    摘要:一、初始化过程图 上图展示了web容器初始化的过程,其官方文档给出了这样的描述: When a web application is deployed into a container, the following steps must be performed, in this order, be 阅读全文
    posted @ 2021-05-02 00:00 H__D 阅读(155) 评论(0) 推荐(0) 编辑