摘要: 一、数据结构 数据结构是计算机存储、组织数据的方式,指相互之间存在一种或多种特定关系的数据元素的集合。 通常情况下,精心选择的数据结构可以带来更高的运行或者存储效率。数据结构往往同高效的检索算法和索引技术有关。 1.1 数据结构分类 数据结构可按照逻辑结构和存储结构划分 1.1.1 逻辑结构 系统的 阅读全文
posted @ 2022-09-09 18:23 夏尔_717 阅读(1500) 评论(0) 推荐(1) 编辑
摘要: 一、概述 java的java.util.concurrent包除了提供底层锁、并发集合外,还提供了一组原子操作的封装类,它们位于java.util.concurrent.atomic包。 Atomic类是通过无锁(lock-free)的方式实现的线程安全(thread-safe)访问。 二、原子类底 阅读全文
posted @ 2022-06-20 22:55 夏尔_717 阅读(286) 评论(0) 推荐(0) 编辑
摘要: 一、概述 Java集合框架主要包括两种类型的容器,一种是集合(Collection),存储一个元素集合,另一种是图(Map),存储键/值对映射。Collection接口又有3种子类型,List、Set和Queue,再下面是一些抽象类,最后是具体实现类,常用的有ArrayList、LinkedList 阅读全文
posted @ 2022-05-08 18:53 夏尔_717 阅读(115) 评论(0) 推荐(0) 编辑
摘要: 一、概述 一个消息从开始到结束会经历这么三个阶段:生产阶段、消息队列Broker存储阶段和消费阶段。一个消息在三个阶段中的任何一个阶段都有可能丢失,知道这个之后,我们只要保证这三个阶段不出现问题,消息自然就不会出现丢失了。接下来我们来细说一下如何保证这三个阶段不出现问题。 二、生产阶段 生产阶段的使 阅读全文
posted @ 2023-12-01 11:48 夏尔_717 阅读(248) 评论(0) 推荐(0) 编辑
摘要: 一、概要 Nacos是阿里开放的一款中间件,它主要提供三种功能:持久化节点注册,非持久化节点注册和配置管理。 二、一致性协议 - AP/CP Nacos不是纯粹的AP服务,也不是纯粹的CP服务,而是两者同时支持。 这要从服务注册说起,Provider启动时将自身的信息注册至注册中心,如果注册中心是Z 阅读全文
posted @ 2023-10-20 18:32 夏尔_717 阅读(75) 评论(0) 推荐(0) 编辑
摘要: raft算法之所以容易理解,其一是他将一致性问题划分成几个子问题,这几个子问题都是独立、可理解和解释的。从传统的思维来讲,对于一个复杂的系统或者工程,都是大化小,分解实现,然后去尝试融合解决整体逻辑。 一、Raft详解 Raft算法是分布式系统开发首选的共识算法。比如现在流行Etcd、Consul、 阅读全文
posted @ 2023-10-16 14:12 夏尔_717 阅读(24) 评论(0) 推荐(0) 编辑
摘要: 一、RestHighLevelClient介绍 JavaREST客户端有两种模式: Java Low Level REST Client:ES官方的低级客户端。低级别的客户端通过http与Elasticsearch集群通信。 Java High Level REST Client:ES官方的高级客户 阅读全文
posted @ 2023-09-25 18:39 夏尔_717 阅读(231) 评论(0) 推荐(0) 编辑
摘要: 一、集群有什么用 1.1 群集的含义与产生 群集(或称为集群)是由多台主机构成,但对外,只表现为一个整体,只提供一个访问入口(域名或IP),相当于一台大型计算机。互联网应用中,随着站点对硬件性能、响应速度、服务稳定性、数据可靠性等要求越来越高,单台服务器开始无法满足负载均衡及高可用的需求,群集因此应 阅读全文
posted @ 2023-09-21 14:04 夏尔_717 阅读(32) 评论(0) 推荐(0) 编辑
摘要: 一、IK分词器简介 IKAnalyzer是一个开源的,基于java语言开发的轻量级的中文分词工具包。从2006年12月推出1.0版开始IKAnalyzer已经推出 了3个大版本。最初,它是以开源项目Lucene为应用主体的,结合词典分词和文法分析算法的中文分词组件。新版本的IKAnalyzer3.0 阅读全文
posted @ 2023-09-11 10:16 夏尔_717 阅读(39) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Mapping Mapping类似于数据库中的表结构定义schema,它的主要作用是: 用来定义索引中的字段的名称、定义字段的数据类型和定义字段类型的一些其它参数 ,比如字符串、数字、布尔字段,倒排索引的相关配置,设置某个字段为不被索引、记录 position 等。每一种数据类型都有对应的 阅读全文
posted @ 2023-09-11 10:16 夏尔_717 阅读(71) 评论(0) 推荐(0) 编辑
摘要: 一、ES的两种查询方式 1.1 查询字符串搜索 GET /user/_search?q=name:张三 1.2 DSL查询 Elasticsearch提供丰富且灵活的查询语言叫做DSL查询(Query DSL),它允许你构建更加复杂、强大的查询。DSL(Domain Specific Languag 阅读全文
posted @ 2023-09-11 10:15 夏尔_717 阅读(58) 评论(0) 推荐(0) 编辑
摘要: # 一、Restful简介 RESTFul:Representational State Transfer,中文意思:表现层状态转化。变现层指的是资源的表现层,这里的资源是指网络上的信息,比如一张图片,一段文本,一步电影,那么每个资源在网络上都有一个标识,可以理解为一个ID,每个资源都有一个ID去表 阅读全文
posted @ 2023-09-08 09:57 夏尔_717 阅读(112) 评论(0) 推荐(0) 编辑
摘要: # 一、ES对应JDK版本 我们在安装ElasticSearch的时候一定要注意ElasticSearch当前版本所支持的JDK版本,免得白安装了。 ElasticSearch与JDK对应的版本查看网址:[https://www.elastic.co/cn/support/matrix#matrix 阅读全文
posted @ 2023-09-04 11:12 夏尔_717 阅读(95) 评论(0) 推荐(0) 编辑
摘要: 一、概述 1.1 简介 Elasticsearch(简称ES)是一个基于Apache Lucene构建的开源、分布式、RESTful接口的全文搜索引擎,Elasticsearch通过对Lucene的封装,隐藏了复杂性,提供了使用简单的RESTful Api。Elasticsearch还是一个分布式文 阅读全文
posted @ 2023-09-01 11:51 夏尔_717 阅读(15) 评论(0) 推荐(0) 编辑
摘要: `Nginx`是一款高性能的Web服务器,它也能够充当反向代理服务器和负载均衡器。在`Web`应用开发中,优化网站速度是一个非常重要的工作。使用`gzip`压缩和解压缩技术,可以有效减小传输文件的大小,提升网站的访问速度。 # 一、开启gzip压缩 首先,需要在`Nginx`的配置文件中开启`gzi 阅读全文
posted @ 2023-08-22 14:39 夏尔_717 阅读(454) 评论(0) 推荐(0) 编辑
摘要: 一、常用函数 1.1 ascii(str) 返回值为字符串str的最左字符的数值,即取得最左字符的ascii码。假如str为空字符串,则返回值为0。假如str为null,则返回值为null。 mysql> select ascii('a'); + + | ascii('a') | + + | 97 阅读全文
posted @ 2023-07-05 14:33 夏尔_717 阅读(130) 评论(0) 推荐(0) 编辑
摘要: 一、概述 测试是软件流程中非常重要,不可或缺的一个环节。一般的测试分为单元测试,集成测试,端到端的手工测试,这也是构成测试金字塔的三个层级。我们今天将要讨论的话题是契约测试,它是处于单元测试和集成测试中间的一个环节。这三个层级分别测试的场景如下: 单元测试:测试单个service 集成测试:测试由多 阅读全文
posted @ 2023-06-16 18:24 夏尔_717 阅读(88) 评论(0) 推荐(0) 编辑
摘要: # 一、概述 1. `Disruptor`是英国外汇交易公司`LMAX`开发的一个高性能队列,研发的初衷是解决内存队列的延迟问题(在性能测试中发现竟然与I/O操作处于同样的数量级)。基于`Disruptor`开发的系统单线程能支撑每秒`600`万订单,`2010`年在`QCon`演讲后,获得了业界关 阅读全文
posted @ 2023-06-09 15:25 夏尔_717 阅读(35) 评论(0) 推荐(0) 编辑
摘要: 一、原理 1.1 消息存在哪了? 消息持久化的地方其实是磁盘上,在如下目录里的commitlog文件夹里。 /root/store/commitlog 源码如下: // {@link org.apache.rocketmq.store.config.MessageStoreConfig} // 数据 阅读全文
posted @ 2023-05-18 09:42 夏尔_717 阅读(63) 评论(0) 推荐(0) 编辑
摘要: 一、概述 TCP是面向连接的,面向流的,提供高可靠性服务。收发两端(客户端和服务器端)都要有一一成对的socket,因此,发送端为了将多个发给接收端的包,更有效的发给对方,使用了优化方法(Nagle算法),将多次间隔较小且数据量小的数据,合并成一个大的数据块,然后进行封包。这样做虽然提高了效率,但是 阅读全文
posted @ 2023-05-11 14:09 夏尔_717 阅读(65) 评论(0) 推荐(0) 编辑
摘要: 一、概述 负责生产消息,一般由业务系统负责生产消息。一个消息生产者会把业务应用系统里产生的消息发送到broker服务器。 RocketMQ支持三种消息发送方式: 同步消息发送(sync):当Producer发送消息到Broker时会同步等待消息处理结果; 异步消息发送(async):当Produce 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(68) 评论(0) 推荐(0) 编辑
摘要: 前言 RocketMQ是一个分布式具有高度可扩展性的消息中间件。本文旨在探索在broker端,生产端,以及消费端是如何做到横向扩展以及负载均衡的。 NameServer集群 提供轻量级的服务发现和路由。每个NameServer 记录完整的路由信息,提供等效的读写服务,并支持快速存储扩展。 就是一个注 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(72) 评论(0) 推荐(0) 编辑
摘要: 前言 首先提出我们的监控诉求,出现如下情况时,希望能够及时接收到系统告警通知: RocketMQ服务宕机 RocketMQ消费者下线 RocketMQ消息出现长时间或者大量堆积 本文将通过修改rocketmq-console源码的方式,增加RocketMQ消费者下线和RocketMQ消息出现长时间或 阅读全文
posted @ 2023-05-06 18:53 夏尔_717 阅读(362) 评论(0) 推荐(0) 编辑