Java基础之泛型

泛型概述以及泛型类

  • 泛型就是类型参数化,处理的数据类型不是固定的,而是可以作为参数传入;
  • 泛型的核心: 告诉编译器想使用什么类型,然后编译器帮你处理一切;
阅读全文

Java基础之反射

Java反射就是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法;对于任意一个对象,都能够调用它的任意方法和属性;并且能改变它的属性。反射机制允许程序在运行时取得任何一个已知名称的class的内部信息,包括包括其modifiers(修饰符),fields(属性),methods(方法)等,并可于运行时改变fields内容或调用methods。
另外,很多优秀的开源框架都是通过反射完成的,比如Spring框架。所以学好反射也是Java程序员的必备基础节能

阅读全文

Zookeeper学习笔记

简介

Zookeeper是一个分布式的、开源的程序协调服务,是 hadoop 项目下的一个子项目。他提供的主要功 能包括:配置管理、名字服务、分布式锁、集群管理等。从名字来看zookeeper 就是动物园管理员,他是用来管 hadoop(大象)、Hive(蜜蜂)、pig(小猪)的管理员, Apache Hbase 和 Apache Solr 的分布式集群都用到了 zookeeper。另外zookeeper是分布式的基础,学习好zookeeper是学习分布式系统的基础,比如ZAB协议等。

阅读全文

Spring源码学习环境搭建

本文主要记录Spring源码的阅读环境的搭建和验证

1.前置条件(我的环境)

  • Intellij IDEA 2020.1.3
  • jdk 1.8
  • mavne3.6.1
  • gradle 5.6
  • git
  • 操作系统Win10
阅读全文

Mybatis集成Spring原理

Mybatis-Spring集成原理

  1. 通过定义BD来最终集成到spring中
  2. 由于mapper文件时接口 所以没法直接通过class名来定义BD,需要通过动态代理生成代理类 所以可以考虑用FactoryBean来自定义Bean的具体实现
  3. 为了保证FactoryBean的通用性,不需要为每一个Mapper编写一个factoryBean 所以可以通过泛型来解决
  4. 考虑到应该动态添加BD到spring中 所以需要用到Import技术来动态添加DB
  5. 最后需要用到scan技术来扫描指定包下的所有接口,生成代理对象,定义为BD,最终通过ImportBeanDefinitionRegistrar 注册到Spring中
阅读全文

RabbitMQ实现延时消息队列

延时消息队列的应用场景颇为广泛,比如订单超时未支付的自动取消,超时未评价的自动好评等等。本文将介绍RabbitMQ中两种常用方式来实现延时消息队列

一、安装

阅读全文

ElasticSearch7.X实现高亮搜索

高亮查询是搜索引擎中最基础的也是最重要的一个功能,站内搜索、电商等都可以通过高亮查询来提升用户体验。在ElasticSearch中高亮查询(highlight)是与query平级的查询

阅读全文