写在前面
大家好,我是代码小郭,又来和大家分享知识啦!
小郭写文章的目的就是为了促进自己技术的成长,同时分享给大家一起学习交流,如果您对 Java领域感兴趣,可以关注我,我们一起学习。
SPI机制
一、简介
SPI 全称 Service Provider Interface,是一套用来被第三方实现或者扩展的接口,经常用来替换框架本身组件或者进行框架功能扩展。
SPI的作用就是寻找扩展的服务实现,可以实现 解耦 (接口和实现分离),提高框架的 可拓展性(第三方可以自己实现,达到插拔式的效果)。
写在前面
大家好,我是代码小郭,又来和大家分享知识啦!
小郭写文章的目的就是为了促进自己技术的成长,同时分享给大家一起学习交流,如果您对 Java领域感兴趣,可以关注我,我们一起学习。
SPI 全称 Service Provider Interface,是一套用来被第三方实现或者扩展的接口,经常用来替换框架本身组件或者进行框架功能扩展。
SPI的作用就是寻找扩展的服务实现,可以实现 解耦 (接口和实现分离),提高框架的 可拓展性(第三方可以自己实现,达到插拔式的效果)。
目前计算机世界中的数据库共有2种类型:关系型数据库、非关系型数据库。
常见的关系型数据库解决方案
MySQL、MariaDB(MySQL的代替品)、Percona Server(MySQL的代替品·)、Oracle、PostgreSQL、
Microsoft Access、Google Fusion Tables、SQLite、DB2、FileMaker、SQL Server、INFORMIX、Sybase、dBASE、Clipper、FoxPro、foshub。
对文件的读写操作会调用内核提供的系统命令,并返回一股file descriptor ,简称fd, 是一个数字,指向内核中的一个结构体(文件路径,数据区等一些属性)。 类似的,对一个socket的读写也会产生相应的描述符(socketfd)。
UNIX网络编程提供的5种I/O模型:
最常用,默认情况所有文件操作都是阻塞的。

基于官方文档翻译,根据个人理解总结于此。
容器知识学习大纲如下:
基于官方文档翻译,根据个人理解总结于此。
Spring IoC容器管理一个或多个bean。这些bean是使用开发者提供给容器的配置元数据创建的(例如,以XML‘
Spring还允许开发者在容器外部创建Bean。这是通过getBeanFactory()方法访问ApplicationContext的BeanFactory来完成的,该方法返回DefaultListableBeanFactory实现。DefaultListableBeanFactory通过registerSingleton(..)和registerBeanDefinition(..)方法支持此注册。然而,一般情况应用程序仅使用通过常规bean定义方式注册bean(XML、Java)。
最近接了个需求,需要实现一个全文检索页面,客户直接要求我们使用ElasticSearch,小郭在之前并没有使用过这个组件,特意花了两天时间对它的基础知识进行了学习和总结,分享给有兴趣的小伙伴。
本文适合ElasticSearch的初学者阅读。
Elasticsearch 为所有类型的数据提供近乎实时的搜索和分析。无论是具有结构化或非结构化文本、数字数据或地理空间数据, Elasticsearch 可以以支持快速搜索的方式有效地存储和索引它。随着数据和查询量的增长, Elasticsearch 的分布式特性也支持无缝扩展。
下面演示用到的索引名称,为了方便,统一都叫
testindex,不再特殊说明。
Elasticsearch REST API 支持结构化查询、全文查询和复杂查询(将两者结合在一起的查询)。
结构化查询包括 类似于可以在 SQL 中构造的查询类型。例如,可以在索引employee中搜索 gender和 age字段,并对匹配结果 按字段hire_date排序。
全文查询根据查询字符串查找所有文档并返回按相关性排序的匹配结果。
小郭写文章的目的是总结复盘学过的知识点,方便以后查阅。
如果本文对您也有帮助,可以动动您的小手点个关注和赞再走呀。
在小郭的工作经历中,每个公司基本都使用到了zookeeper。趁着最近有空,小郭想在此总结一下zookeeper的基本知识。
Apache ZooKeeper 是 Apache 软件基金会旗下的开源项目,是用于分布式应用程序的分布式开源协调服务。它被设计为易于编程,并使用以熟悉的文件系统目录树结构为基础的数据模型。它在 Java环境 中运行。
大家在学一门技术时,基本都习惯关注某个具体技术点是什么,怎么用。很少有人去了解这个技术点背后的故事。小郭将Redis各个技术点背后的故事进行了收集,大家当个八卦花边了解一下即可。
为什么默认端口是6379? 不知道大家在刚学习Redis的时候有没有问过这个问题? 我相信大部分人觉得这可能就是作者随意命名的,没什么好说的。 其实这背后还是有点小故事的。
Alessia Merz 是一位意大利女演员、舞女。 Redis 作者 Antirez 早年看电视节目,觉得Alessia Merz 在节目中的一些话愚蠢可笑,Antirez 喜欢造“梗”用于平时和朋友们交流,于是造了一个词 "MERZ",形容愚蠢,与 "stupid" 含义相同。
Apache Kafka3.0.0的发布为kafka彻底去掉Zookeeper铺平了道路,Kafka Raft 支持元数据主题的快照以及自我管理,而3.1.0版本在2022.1.24发布,对3.0.0版本又修改了。 下面的部分配置需要开启了KRaft部署模式才会生效。
其中有很多配置项在一般应用场景均不涉及调整,保持默认即可,仅需了解哦。
| 配置项 | 描述 |
|---|---|
| broker.id | 此服务器的唯一标识。如果未设置,将自动生成。为了避免 ZooKeeper 生成的服务器标识 和用户配置的服务器标识 之间的冲突,生成的服务器标识 从reserved.broker.max.id + 1 开始。 |
| log.dirs | 保存日志数据的目录,逗号分隔列表。如果未设置,则使用 log.dir 中的值。 |
| zookeeper.connect | 指定 ZooKeeper 连接字符串,格式为hostname:port,其中 host 和 port 是 ZooKeeper 服务器的主机和端口。要允许在 ZooKeeper 机器关闭时通过其他 ZooKeeper 节点进行连接,还可以指定多个主机hostname1:port1,hostname2:port2,hostname3:port3。服务器还可以将 ZooKeeper chroot 路径作为其 ZooKeeper 连接字符串的一部分,该连接字符串将其数据放置在全局 ZooKeeper 命名空间中的某个路径下。例如,要给出 chroot 路径, /chroot/path请将连接字符串给出为hostname1:port1,hostname2:port2,hostname3:port3/chroot/path. |