自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(212)
  • 收藏
  • 关注

原创 ElasticSearch-7.x RestHighLevelClient 常用API

  关于ElasticSearch 的一些基础概念可以参考我之前基于6.x总结的:https://www.cnblogs.com/wuzhenzhao/category/1767990.html  本文主要总结在Java 中如何应用RestHighLevelClient。测试方法基于 main 进行。1、引入依赖: 1      <dependency> 2 ...

2021-07-19 16:57:00 9

原创 Redis 高性能的底层原理

Redis是单进程单线程?为什么这么快:  进入redis 安装目录下执行以下命令,查看set lpush命令的处理效率:./redis-benchmark -t set,lpush -n 100000 -q  根据官方的数据,Redis 的 QPS 可以达到 10 万左右(每秒请求数)。  就我这个虚拟机的性能,可以看到每秒钟处理 13 万多次 set 请求,每秒钟处理 13 万次左...

2020-12-05 14:47:00 400

原创 Pulsar 安装及消息特性基础

  Pulsar 是一个用于服务器到服务器的消息系统,具有多租户、高性能等优势。 Pulsar 最初由Yahoo开发,目前由Apache 软件基金会管理。Pulsar 的关键特性如下:Pulsar 的单个实例原生支持多个集群,可跨机房在集群间无缝地完成消息复制。极低的发布延迟和端到端延迟。可无缝扩展到超过一百万个 topic。简单的客户端 API,支持Java、Go、Pyth...

2020-11-05 10:25:00 526

原创 ElasticSearch索引核心原理

FST有穷状态转换器:  Finite StateTransducers 简称 FST,通常中文译作有穷状态转换器或者有限状态传感器  FSTs are finite-state machines that map a term (byte sequence) to an arbitrary output。FST是一项将一个字节序列映射到block块的技术  假设我们现在要将mop...

2020-10-19 20:32:00 456

原创 分布式事务之 Seata

Seata 是什么?  官网 :https://seata.io/zh-cn/docs/overview/what-is-seata.html  Seata 是一款开源的分布式事务解决方案,致力于在微服务架构下提供高性能和简单易用的分布式事务服务。在 Seata 开源之前,Seata 对应的内部版本在阿里经济体内部一直扮演着分布式一致性中间件的角色,帮助经济体平稳的度过历年的双11,...

2020-10-10 16:08:00 261

原创 org.apache.dubbo 2.7.7 服务端处理请求及时间轮(失败重试)

本文主要针对dubbo-spring-boot-starter 2.7.7版本, 对应的 org.apache.dubbo 2.7.7 版本的源码。  本文主要从以下几个点来分析:服务端处理请求.时间轮(失败重试)。服务端接收数据的处理流程:  客户端请求发出去之后,服务端会收到这个请求的消息,然后触发调用。服务端这边接收消息的处理链路,也比较复杂,我们回到NettS...

2020-10-09 18:31:00 471

原创 org.apache.dubbo 2.7.7 服务消费源码

org.apache.dubbo服务消费原理源码分析:  本文主要针对dubbo-spring-boot-starter 2.7.7版本, 对应的 org.apache.dubbo 2.7.7 版本的源码。  本文主要从以下几个点来分析:服务消费的入口。构建远程服务的代理。RegistryDirectory 目录服务获取目标服务的url地址。客户端服务通信的建立。...

2020-09-30 21:14:00 535

原创 org.apache.dubbo 2.7.7 服务发布注册源码

org.apache.dubbo服务注册原理源码分析:  本文主要针对dubbo-spring-boot-starter 2.7.7版本, 对应的 org.apache.dubbo 2.7.7 版本的源码。  本文主要从以下几个点来分析:前置知识点--Dubbo的SPI机制。服务发布注册的入口。服务发布源码分析服务注册源码分析。Dubbo的SPI机制:  没接...

2020-09-29 23:54:00 788

原创 org.apache.dubbo 2.7.x 再聚首

Dubbo 版本 :  Dubbo 社区目前主力维护的有 2.6.x 和 2.7.x 两大版本,其中,2.6.x 主要以 bugfix 和少量 enhancements 为主,因此能完全保证稳定性2.7.x 作为社区的主要开发版本,得到持续更新并增加了大量新 feature 和优化,同时也带来了一些稳定性挑战  版本更多信息请参考官网。相信小伙伴们对于Dubbo 都有一定的了...

2020-09-28 12:42:00 1010

原创 spring-cloud-gateway 服务网关

  Spring Cloud Gateway是Spring Cloud官方推出的第二代网关框架,取代Zuul网关。网关作为流量的,在微服务系统中有着非常作用,网关常见的功能有路由转发、权限校验、限流控制等作用。  Spring Cloud Gateway是Spring官方最新推出的一款基于Spring Framework 5,Project Reactor和Spring Boot 2之...

2020-09-25 10:00:00 285

原创 spring-cloud-netflix-hystrix 原理源码分析

spring-cloud-netflix-hystrix 原理源码分析:  本文主要针对spring-cloud-dependencies Hoxton.SR4版本, spring-cloud-starter-netflix-hystrix 源码的解析。  对于未接触过 hystrix的小伙伴可以参考https://www.cnblogs.com/wuzhenzhao/p/...

2020-09-24 20:20:00 279

原创 spring-cloud-config 源码解析

spring-cloud-config源码解析:  本文主要针对spring-cloud-dependencies Hoxton.SR4版本,spring-cloud-config-server/client的2.2.2.RELEASE版本进行源码的解析。  对于未接触过 Config的小伙伴可以参考https://www.cnblogs.com/wuzhenzha...

2020-09-22 23:36:00 562

原创 spring-cloud-netflix-eureka 源码分析

spring-cloud-netflix-eureka源码解析:  本文主要针对spring-cloud-dependencies Hoxton.SR4版本, spring-cloud-starter-netflix-eureka-server的2.2.2.RELEASE版本进行源码的解析。  对于未接触过 Eureka 的小伙伴可以参考https://www.cnb...

2020-09-19 12:27:00 275

原创 spring-cloud-openfeign 源码解析

spring-cloud-openfeign 源码解析:  本文主要针对spring-cloud-starter-openfeign 的2.2.3.RELEASE版本进行源码的解析。  对于未接触过 Feign的小伙伴可以参考https://www.cnblogs.com/wuzhenzhao/p/9472607.html进行一些基础知识的了解。@EnableFeignC...

2020-09-16 19:08:00 350

原创 spring-cloud-netflix-ribbon 源码解析

spring-cloud-netflix-ribbon 源码分析:  本文主要针对spring-cloud-starter-netflix-ribbon 的2.2.3.RELEASE 版本进行源码的解析。  对于未接触过 Ribbon 的小伙伴可以参考https://www.cnblogs.com/wuzhenzhao/p/9468928.html进行一些基础知识的了解。注...

2020-09-15 14:34:00 750

原创 Nacos 集群选举原理

集群选举问题:  Nacos支持集群模式,很显然。而一旦涉及到集群,就涉及到主从,那么nacos是一种什么样的机制来实现的集群呢?  Nacos的集群类似于zookeeper, 它分为leader角色和follower角色, 那么从这个角色的名字可以看出来,这个集群存在选举的机制。 因为如果自己不具备选举功能,角色的命名可能就是master/slave了.选举算法 :  Naco...

2020-09-09 20:20:00 7432 2

原创 Nacos 服务消费原理

  继Nacos服务注册原理后,我们来看一下Nacos 是怎么实现服务的消费的。  服务注册成功之后,消费者就可以从nacos server中获取到服务提供者的地址,然后进行服务的调用。在服务消费中,有一个核心的类 NacosDiscoveryClient 来负责和nacos交互,去获得服务提供者的地址信息。基于org.springframework.cloud.client.di...

2020-09-07 10:36:00 1193

原创 Nacos 服务注册的原理

Nacos 服务注册需要具备的能力:服务提供者把自己的协议地址注册到Nacos server服务消费者需要从Nacos Server上去查询服务提供者的地址(根据服务名称)Nacos Server需要感知到服务提供者的上下线的变化服务消费者需要动态感知到Nacos Server端服务地址的变化  作为注册中心所需要的能力大多如此,我们需要做的是理解各种注册中心的独有特性,总...

2020-09-07 10:35:00 5559 5

原创 Sharding-JDBC分片策略、分布式事务、全局ID

分片策略详解 :  https://shardingsphere.apache.org/document/current/cn/features/sharding/concept/sharding/  Sharding-JDBC 中的分片策略有两个维度:分库(数据源分片)策略和分表策略。  分库策略表示数据路由到的物理目标数据源,分表分片策略表示数据被路由到的目标表。分表策略是依赖...

2020-08-11 10:25:00 3361

原创 Sharding-JDBC基础概念及API操作

  在分布式服务中,要实现数据源得选择有如下相关方案DAO:继承 AbstractRoutingDataSource 类,实现对应的切换数据源的方法,结合自定义注解 + 切面实现动态数据源切换。ORM:MyBatis 插件进行数据源切换JDBC:Sharding-JDBC 基于客户端的分库分表方案Proxy:Mycat、Sharding-Proxy 基于代理的分库分表方案S...

2020-08-11 10:22:00 1409

原创 算法数据结构之树

  有许多逻辑关系并不是简单的线性关系,在实际场景中,常常存在着一对多,甚至是多对多的情况。其中树和图就是典型的非线性数据结构,我们首先讲一讲树的知识。什么是树呢?  在现实生活中有很多体现树的逻辑的例子。例如企业里的职级关系,就是一个“树”。  除人与人之间的关系之外,许多抽象的东西也可以成为一个“树”,如一本书的目录。在数据结构中,树的定义如下。  树(tree)是n(...

2020-07-24 15:05:00 546

原创 算法之数据结构基础

什么是数组?  数组对应的英文是array,是有限个相同类型的变量所组成的有序集合,数组中的每一个变量被称为元素。数组是最为简单、最为常用的数据结构。以整型数组为例,数组的存储形式如下图所示。  正如军队里的士兵存在编号一样,数组中的每一个元素也有着自己的下标,只不过这个下标从0开始,一直到数组长度-1。数组的另一个特点,是在内存中顺序存储,因此可以很好地实现逻辑上的顺序表。  ...

2020-07-24 10:05:00 185

原创 算法的基础概念

什么是算法?  算法,对应的英文单词是algorithm,这是一个很古老的概念,最早来自数学领域。在数学领域里,算法是用于解决某一类问题的公式和思想。  计算机科学领域的算法,它的本质是一系列程序指令,用于解决特定的运算和逻辑问题。从宏观上来看,数学领域的算法和计算机领域的算法有很多相通之处。算法有简单的,也有复杂的。  在计算机领域,我们同样会遇到各种高效和拙劣的算法。衡量算法好...

2020-07-23 20:41:00 493

原创 maven之私服搭建

  私服是一种私有服务器,是在局域网中搭建的一种特殊的远程仓库,目的是代理远程仓库及部署第三方构建,私服搭建成功之后,当maven需要下载构件时,直接请求私服。私服上存在则下载到本地仓库,不存在才请求外部的远程仓库,将构件下载到私服,再提供给本地仓库下载,可以减少重复网络流量下载问题。  目前搭建 maven 私服主要有以下三种方式。最主流的就是NexusNexus搭建mave...

2020-07-16 14:22:00 302

原创 maven之自定义archetype

  Archetype 是一个 Maven 项目模板工具包。原型被定义为原始模式或模型,从中创建所有其他相同类型的东西。这些名称适合我们尝试提供一个系统,该系统提供生成Maven项目的一致方法。Archetype 将帮助作者为用户创建 Maven 项目模板,并为用户提供生成这些项目模板的参数化版本的方法。  技术成熟的公司基本都有自己的一套Archetype ,接下来我们就来实践一下...

2020-07-16 11:05:00 442

原创 maven之自定义插件

  Maven 是一个系统管理框架或体系,专注管理构建的生命周期和各个阶段。真正工作的是绑定到各个阶段的 Maven 插件。每个插件具有一个或一个以上的目标,可以将这些插件的目标绑定到 Maven 生命周期的各个阶段中,或直接从命令行运行这些插件的目标。用户可以从 Apache 和其他的参考 Maven 中心仓库获取。当然,这些插件基本上能满足大部分程序员的需求,但是在特殊情况下,可能我...

2020-07-15 19:19:00 770

原创 任务调度之 Elastic Job

认识 Elastic-Job:  任务调度高级需求,Quartz 的不足:作业只能通过 DB 抢占随机负载,无法协调任务不能分片——单个任务数据太多了跑不完,消耗线程,负载不均作业日志可视化监控、统计发展历史:  官网:http:://elasticjob.io/docs/elastic-job-lite/00-overview/  Elastic-Job是怎么来的?...

2020-07-14 15:49:00 584

原创 雪花算法原理解析

分布式ID常见生成策略:  分布式ID生成策略常见的有如下几种:数据库自增ID。UUID生成。Redis的原子自增方式。数据库水平拆分,设置初始值和相同的自增步长。批量申请自增ID。雪花算法。百度UidGenerator算法(基于雪花算法实现自定义时间戳)。美团Leaf算法(依赖于数据库,ZK)。  本文主要介绍SnowFlake 算法,是 Twitter 开源的...

2020-07-13 20:36:00 820 1

原创 基于 zxing 的二维码生成、解析

  在很多的场景下我们需要用到二维码,这里就通过google的zxing来对二维码进行实现。二维码生成:1.导入依赖:<dependency>  <groupId>com.google.zxing</groupId>  <artifactId>core</artifactId>  <version>2....

2020-07-13 19:42:00 220

原创 spring-cloud-oauth2 认证授权

什么是OAuth2?  OAuth2是一个关于授权的开放标准,核心思路是通过各类认证手段(具体什么手段OAuth2不关心)认证用户身份,并颁发token(令牌),使得第三方应用可以使用该令牌在限定时间、限定范围访问指定资源。主要涉及的RFC规范有RFC6749(整体授权框架),RFC6750(令牌使用),RFC6819(威胁模型)这几个,一般我们需要了解的就是RFC6749。获取令牌的...

2020-07-07 11:03:00 1445 2

原创 spring security 自定义短信验证登录

  在之前的博客中我们实现了基于验证码的登陆方式。但是我们仅仅实现了通过图片验证码的登录,现在我们基于security 实现一下基于 短信验证码的登录。  基于之前对于 security 的了解,我们知道了要实现一个验证的基本流程,其中最重要的是AbstractAuthenticationToken(令牌类)、AuthenticationProvider(认证类)、Abstract...

2020-07-03 20:29:00 415

原创 spring security session管理

单机 Session 管理:  本文Demo 基于springboot 2.0.1版本.  spring security 中提供了很好的 session 配置管理。包括session 无效处理、session 并发控制、session过期等相应处理配置。  在Security 的配置中我们重写了protected void configure(HttpSecurity ht...

2020-07-02 16:57:00 460

原创 JDK1.8之HashMap实现原理

HashMap概述:  HashMap基于哈希表的Map接口实现,是以key-value存储形式存在。HashMap 的实现不是同步的,这意味着它不是线程安全的。它的key、value都可以为null。此外,HashMap中的映射不是有序的。在 JDK1.8 中,HashMap 是由 数组+链表+红黑树构成,新增了红黑树作为底层数据结构,结构变得复杂了,但是效率也变的更高效。Hash...

2020-07-01 15:54:00 429

原创 spring security 实现登录验证码及记住我

spring security 验证码登录:  在现在主流的网站登录页上,我们经常可以看到登陆的时候是通过账号密码登录,那么时常会看到需要我们输入一个图片验证码里面的值。或者通过手机验证码进行短信登陆,进行获取验证码进行登录。而这两种登陆方式都用到了验证码,前者是图片验证码,后者是短信验证码。在spring security 中使用验证码来验证登录,其核心还是拦截器链,当请求获取验证码...

2020-06-23 16:39:00 837

原创 springboot 集成 spring security 自定义登录

Spring Security是什么?  Spring Security 提供了基于javaEE的企业应有个你软件全面的安全服务。这里特别强调支持使用SPring框架构件的项目,Spring框架是企业软件开发javaEE方案的领导者。如果你还没有使用Spring来开发企业应用程序,我们热忱的鼓励你仔细的看一看。熟悉Spring特别是一来注入原理两帮助你更快更方便的使用Spring S...

2020-06-23 15:25:00 1530

原创 ELK整合SpringBoot日志收集

ELK简介:  ELK是Elasticsearch+Logstash+Kibana简称Elasticsearch:是一个分布式的搜索和分析引擎,可以用于全文检索、结构化检索和分析,并能将这三者结合起来。Elasticsearch 基于 Lucene 开发,现在是使用最广的开源搜索引擎之一。Logstash: 简单来说就是一根具备实时数据传输能力的管道,负责将数据信息从管道的输入端...

2020-05-18 20:38:00 3140 2

原创 ElasticSearch整合SpringBoot的API操作

  在我们熟悉了 es 的基本rest 的操作之后,我们将使用SpringBoot进行整合,进一步熟悉Java API的相关操作。1.创建一个标准的Springboot项目,引入Boot相关依赖之后,还需要导入依赖(与es服务端版本需要保持一致):<dependency> <groupId>org.elasticsearch.client</g...

2020-05-18 20:37:00 608

原创 ElasticSearch分布式高级特性

  es支持集群模式,是一个分布式系统,其好处主要有两个:增大系统容量,如内存,磁盘,使得es集群可以支持PB级的数据提高系统可用性,即使部分节点停止服务,整个集群依然可以正常服务  es集群由多个es实例组成,不同集群通过集群名字来区分,可通过cluster.name来进行修改,默认为elasticsearch。每个es实例本质上是一个JVM进程,且有自己的名字,可以通过no...

2020-05-17 17:22:00 169

原创 Elasticsearch概念及安装

  官网:https://www.elastic.co/cn/products/elasticsearch  Elasticsearch是一个基于Lucene的搜索服务器。它提供了一个分布式多用户能力的全文搜索引擎,基于RESTful web接口。是用Java开发的,并作为Apache许可条款下的开放源码发布,是当前流行的企业级搜索引擎。又以下特点分布式,无需人工搭建集群(solr...

2020-05-17 17:21:00 179

原创 Spring事务源码分析

  在Spring中,事务有两种实现方式:编程式事务管理:编程式事务管理使用TransactionTemplate可实现更细粒度的事务控制。申明式事务管理:基于Spring AOP实现。其本质是对方法前后进行拦截,然后在目标方法开始之前创建或者加入一个事务,在执行完目标方法之后根据执行情况提交或者回滚事务。  申明式事务管理不需要入侵代码,通过@Transactional就...

2020-05-12 10:21:00 230

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除