自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

闫兵的博客

stay hungry stay foolish (求知若渴,虚心若愚)

  • 博客(50)
  • 收藏
  • 关注

原创 zookeeper集群安装详细步骤

zookeeper集群安装详细步骤zookeeper依赖Java环境,保证linux环境存在jdk1.7及以上版本下载和解压安装包wget https://mirror.bit.edu.cn/apache/zookeeper/zookeeper‐3.5.8/apache‐zookeeper‐3.7.0‐bin.tar.gztar -zxvf apache‐zookeeper‐3.7.0‐bin.tar.gzapache‐zookeeper‐3.5.8‐bin.tar.gz都可以, 如果wge

2021-09-09 20:07:38 596

原创 spring底层核心类概念解析-03

spring-03

2021-09-08 07:28:14 178 1

原创 手写spring核心原理-02

spring核心原理手写-02目标通过手写模拟,了解Spring的底层源码启动过程通过手写模拟,了解BeanDefinition、BeanPostProcessor的概念通过手写模拟,了解Spring解析配置类等底层源码工作流程通过手写模拟,了解依赖注入,Aware回调等底层源码工作流程通过手写模拟,了解Spring AOP的底层源码工作流程...

2021-09-05 12:48:31 197

原创 spring底层核心原理大致流程解析-01

spring源码不懂而遇见的坑事务类中多个构造方法

2021-09-04 18:23:27 232 1

原创 ShardingSphere5.0.0-beta-jdbc-结果归并源码(三)

ShardingSphere5.0.0-beta-jdbc-结果归并源码(三)目录SQL结果并归总结 (带完善)结果归并this.resultSetHandler.handleResultSets(ps) public List<Object> handleResultSets(Statement stmt) throws SQLException { ErrorContext.instance().activity("handling results"

2021-09-01 06:59:03 290

原创 ShardingSphere5.0.0-beta-jdbc-sql改写和sql执行源码(二)

ShardingSphere5.0.0-beta-jdbc-sql改写和sql执行源码(二)目录SQL 改写SQL 执行SQL解析和SQL路由 请查看ShardingSphere5.0.0-beta-jdbc查询源码初探(一)SQL改写改写类型标识符改写select goods_name from t_order_ where order_id = 1 改: select goods_name from t_order__1 where order__id = 1;补列 :

2021-08-29 16:41:26 381

原创 ShardingSphere5.0.0-beta-jdbc-sql解析和sql路由源码(一)

https://blog.csdn.net/gonghaiyu/article/details/112081053https://www.jianshu.com/p/d927ad6a1b3e

2021-08-29 16:36:38 1017

原创 ShardingSphere5.0.0-beta的UI初体验

ShardingSphere5.0.0-beta的UI初体验拉取代码git clone https://github.com/apache/shardingsphere-ui.git启动前后端服务在shardingsphere-ui-frontend目录下了执行:npm install出现报错:Error: Can't find Python executable "python", you can set the PYTHON env var执行:npm install --glob

2021-08-25 22:15:01 527 1

原创 ShardingSphere5.0.0-beta的proxy分库分表demo

ShardingSphere-5.0.0.beta的proxy分表demohttps://mirrors.bfsu.edu.cn/apache/shardingsphere/5.0.0-beta/apache-shardingsphere-5.0.0-beta-shardingsphere-proxy-bin.tar.gzhttps://repo1.maven.org/maven2/mysql/mysql-connector-java/5.1.31/mysql-connector-java-5.

2021-08-24 16:20:19 518

原创 ShardingSphere5.0.0-beta-jdbc的分库分表demo

ShardingSphere-5.0.0.beta的分表demo版本spring boot 2.2.2.RELEASEshardingsphere 5.0.0-betamybatis-plus-boot-starte 3.1.1druid 1.2.6引入ShardingSphere依赖<dependency> <groupId>org.apache.shardingsphere</groupId> <artifactId>shardin

2021-08-23 21:17:02 813 2

原创 Soul网关学习Resilience4j插件体验和源码解读

Soul网关学习resilience4j插件体验和源码解读目标什么是resilience4jsould的resilience4j体验Resilience4J插件源码解读什么是Resilience4jResilience4J是我们Spring Cloud G版本推荐的容错方案,它是一个轻量级的容错库借鉴了Hystrix而设计,并且采用JDK8 这个函数式编程,即lambda表达式相比之下, Netflix Hystrix 对Archaius 具有编译依赖性,Resilience

2021-03-15 07:03:37 309

原创 线程池中核心参数关系源码解读

线程池创建中核心参数关系源码解读核心参数核心线程数(corePoolSize)业务线程数安装CPU密集型1N,IO密集型2N,多了会抢占资源 (Nlinux服务CPU核大小)最大线程数(maximumPoolSize)业务线程数安装CPU密集型1N,IO密集型2N,多了会抢占资源 (Nlinux服务CPU核大小)空闲线程的保活时间(keepAliveTime)多出的核心线程的空闲线程存活时间任务队列(workQueue)BlockingQueue 接口的某个实

2021-03-11 07:52:28 162

原创 mysql单表为什么不要超过2千万条时最优

mysql单表为什么不要超过2千万条时最优理解本文章,本身要对索引原理有一定了解mysql数据存储大部分场景我们都是使用InnoDB存储引擎,InnoDB最小存储单元是页,每页固定是16KB假设:一行数据是1KB(大部分互联网公司的数据都为1KB,表的字段属性多),那每页就只能存储16条数据B+tree结构在B+tree中,叶子节点存放数据,非叶子节点存放键值+指针假设主键 ID 为 bigint 类型,长度为 8 字节,而指针大小在 InnoDB 源码中设置为 6 字节,

2021-03-06 11:57:43 1284 1

原创 Web MVC和JDBC API 实现数据转发和保存

Web MVC和JDBC API 实现数据转发和保存详细内容省略很多,重要回顾谢原始用法通过自研 Web MVC 框架实现(可以自己实现)一个用户注册,orward 到一个成功的页面(JSP 用法)用户新增到数据库什么是JDNI用户注册用户注册界面:index.jsp​```jsp<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%><% String path = req

2021-03-02 21:14:17 155

原创 springcloud-gateway源码-(十)Ribbon负载均衡导图

springcloud-gateway-(十)Ribbon负载均衡导图

2021-02-25 07:23:41 220

原创 springcloud-gateway源码-(九)ribbon的7种负载均衡策略

springcloud-gateway-(九)ribbon的7种负载均衡策略ribbon有7种负载均衡策略可供选择:// 其中Rule是所有负载均衡算法的父接口public interface IRule { Server choose(Object var1); void setLoadBalancer(ILoadBalancer var1); ILoadBalancer getLoadBalancer();}自定义负载均策略:自己实现Rule这个接口或者继承Ab

2021-02-25 07:21:44 3591

原创 springcloud-gateway源码-(八)负载均衡处理流程分析

springcloud-gateway-(八)负载均衡处理流程分析上一篇文章案例我们知道有eureka自动和手动配置微服务ip和端口来获取服务进行转发, 这篇我们深度解读原理各自原理1 负载均衡分析基于前面的学习我们知道RoutePredicateHandlerMapping,作用相当于webmvc的handlermapping:将请求映射到对应的handler来处理。RoutePredicateHandlerMapping会遍历所有路由Route,并将获取到的route放入当前请求上下文的属性中

2021-02-25 07:11:02 880 2

原创 springcloud-gateway源码-(七)Ribbon负载均衡使用

springcloud-gateway-(七)Ribbon负载均衡使用1 如何使用添加依赖<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-netflix-eureka-client</artifactId></dependency>提示: spring-cloud-starte

2021-02-25 07:00:50 579

原创 springcloud-gateway源码-(六)全流程处理导图

springcloud-gateway-(六)全流程处理导图

2021-02-25 06:54:03 270

原创 springcloud-gateway源码-(五)-路由route

路由route1.1 路由定义定位器RouteDefinitionLocator在前面的分析GatewayAutoConfiguration类会初始化RouteDefinitionLocator,@Bean@Primarypublic RouteDefinitionLocator routeDefinitionLocator( List<RouteDefinitionLocator> routeDefinitionLocators) { return new Com

2021-02-25 06:49:27 847

原创 响应式编程中的Flux和Mono 的理解

响应式编程中的Flux和Mono 的理解1.1 Publisher由于响应流的特点,我们不能再返回一个简单的POJO对象来表示结果了。必须返回一个类似Java中的Future的概念,在有结果可用时通知消费者进行消费响应。2.1 Flux是一个发出(emit)0-N个元素组成的异步序列的Publisher,可以被onComplete信号或者onError信号所终止 ,在有结果可用时通知消费者进行消费响应传统数据处理public List<ClientUser> allUsers()

2021-02-25 06:26:16 1426

原创 4种GC日志解读和分析

GC日志解读和分析如下是模拟内存溢出的Java代码案例代码存在生产垃圾对象,当垃圾对象超过最大堆内存时,就造成内存溢出import java.util.Random;import java.util.concurrent.TimeUnit;import java.util.concurrent.atomic.LongAdder;/*演示GC日志生成与解读*/public class GCLogAnalysis { private static Random random = n

2021-02-24 06:36:39 3478 8

原创 springcloud-gateway源码-(三)如何处理一个请求

springcloud-gateway-(三)如何处理一个请求gateway是如何处理一个请求例:post请求http://localhost:9527/order/gateway最后调用http://10.201.35.189:8090/order/gateway路由比配:打断点到RoutePredicateHandlerMapping的lookupRoute,循环每个路由,看看predicate是否匹配,一直到找到匹配的路由,这里是默认的default_path_to_httpbin

2021-02-20 18:42:12 618

原创 springcloud-gateway源码-(二)启动初始化的过程

springcloud-gateway-(二)启动初始化的过程引入依赖:<dependency> <groupId>org.springframework.cloud</groupId> <artifactId>spring-cloud-starter-gateway</artifactId></dependency>1. 怎么从源头加载起来的springboot的启动注解@SpringBootApplicati

2021-02-20 18:24:40 700

原创 springcloud-gateway源码-(一)入门使用

springcloud-gateway-入门使用1: fork spring cloud gateway到自己分支链接:https://github.com/50133142/spring-cloud-gateway.git建立自己的学习分支:2:mvn install 成功坑:需要注释掉 maven-checkstyle-plugin 才能install成功3:运行gateway的demo一在himly-demo工程下,新建gateway工程,服务注册到eureka上,gith

2021-02-20 18:11:24 361 2

原创 《金字塔原理》-为什么要采用金字塔结构

为什么要采用金字塔结构读《金字塔原理》-为什么要采用金字塔结构归类分组:构建金字塔思维结构人的大脑一般一下子就记住7个单词或项目、思想、事务;超过7个很难一下子记住例如:妈妈要你去买日常用品,有黄瓜、葡萄、西红柿、橘子、鸡肉、牛肉、猪肉、南瓜;一下子全部告诉你,你肯定记不住,如果你妈妈这样说:蔬菜:黄瓜、南瓜、西红柿 ; 水果:葡萄、橘子 ;肉:鸡肉、猪肉、牛肉,往上抽象了一个层次:蔬菜、水果、肉,这样你就住这三项就可以,其他通过联想记住,这样就容易多了,如果你妈妈不是这样告诉你,你自

2021-02-20 17:52:30 474 2

原创 《认知觉醒》-潜意识

潜意识1 提升思考力的方式是不断明确核心困难和心得感悟,并专注于此美团创始人王兴:多数人为了逃避思考,而愿意做任何事情思考时间非常耗脑能事情,从潜意识角度看:我们都会选择不大量耗能量的事情做,驱易避难...

2021-02-20 17:51:32 656

原创 《认知觉醒》-学习

学习读《认知觉醒学习的个人解读1 舒适区,拉伸区,困难区舒适区:在这个区,人容易思路懒惰,技术停滞不前,并且容易分神,不会专注,感到生活没有多少意义;拉伸区:相当我们跳几下就能摘到的苹果,需要付出努力,再这个区我们最容易成长,学习效率也高,既有成就又有挑战;困难区:在这个区由于困难过大,可能首先心里就胆怯,不敢面对,而选择逃避困难2 学习之后的思考,思考之后的行动,行动之后的改变更为重要学习:看一本书,看一个技术点,或技术视频,这些量化了时间投入,会常常给自我感觉:我一直在学习,每天

2021-02-20 17:51:09 1077 1

原创 《认知觉醒》-早起

早起读《认知觉醒》早起的个人理解1 早起前想清楚,写来下,明天早起时需要干什么,没有想清楚的话,早上起来时还得花经历想今天要干嘛,中间可能浪费好多时间2 初期会有一个痛苦的适应期前面两周是个兴奋期,中间有两个月时间,因为身体还没适应过来,上午可能会出现打哈欠,精力不佳,困等,一旦过来适应期,早起的难度就小了3 早上时间是精神状态最好,应该安排把最困难的事情做掉,这样当天余下的时间给我感觉更加舒适,轻松运动想要灵魂走的远,身体必须一直在路上...

2021-02-20 17:48:51 213

原创 《暗时间》-怎么才叫专注

怎么才叫专注读《暗时间》中专注的个人理解以CPU打满方式投入到一件事物 – (工作中的一件事,或学习的东西)工作中,走路中,吃饭中,上厕所中,睡觉前,做梦中在一段时间时刻常驻在你的大脑中,当前这件事在你电脑分配最高的优先级,不管你在啥,你这段时间心心念念想的都是它,思维时间思维时间不是你投入了多少时间在看书,学习上,或记忆了哪些知识,这是东西我们转眼就会忘记的,思维时间是在上续讲的某个时间心心念念想的这件事前提下,根据当前事物/知识,关联,想象,然后推导出本质的东西,或者在进一步抽

2021-02-20 17:43:26 89

原创 《暗时间》-知其所以然

知己所以然读《暗时间》知己所以然的个人理解我们学习一个东西,光知道他的答案&做法,会存在脑海碎片中,某时想起时只知道我好像见过,但是不能回想来知识的内容,它的核心是什么,以及怎么用它,不能通过我们熟悉的线&点去关联、推导出来知识的内容,也不能帮助我们去检索在脑海里的知识,所以我们要知己所以然,在知己所以然的情况下,哪怕结论&答案&正确的做法都忘记,都能帮助我们通过自身熟悉的线&点去关联、推导出来,答案&做法到底怎么来的,从问题到答案到

2021-02-20 17:39:35 135

原创 (十七)soul源码的spi使用

(十七)soul的spi使用目标spi是什么spi是什么说明SPI 全称为 Service Provider Interface, 是 JDK 内置的一种服务提供发现功能, 一种动态替换发现的机制.举个例子, 要想在运行时动态地给一个接口添加实现, 只需要添加一个实现即可.如果现在需要对API提供一种新的实现,我们可以不用修改原来的代码,直接生成新的Jar包,在包里提供API的新实现。通过Java的SPI机制,可以实现了框架的动态扩展,让第三方的实现能像插件一样嵌入到系统中Java的

2021-02-03 07:30:02 211

原创 (十六)soul源码的自定义插件

((十六)soul的自定义插件目标soul的本身提供的插件soul的本身提供的插件说明插件是 soul 网关的核心执行者,每个插件在开启的情况下,都会对匹配的流量,进行自己的处理。在soul 网关里面,插件其实分为2 类:一类是单一职责的调用链,不能对流量进行自定义的筛选。另一类,能对匹配的流量,执行自己的职责调用链。插件类别单一职责原插件首先需要实现org.dromara.soul.plugin.api.SoulPlugin Mono<V

2021-02-01 23:20:05 1174

原创 (十五)soul源码的Resilience4j体验和原理(下)

(十五)sould的Resilience4j体验和原理(下)目标Resilience4JPlugin核心源码解读Resilience4JPlugin核心源码1: doExecute:、从上下文中拿到配置信息,2:Resilience4JHandle是Resilience4J的参数对象类,根据rule值,json转化而来,即拿到我们在admin控制台配置的参数3:circuitEnable:是否开启熔断,配置0:关闭,直接走 rateLimiter方法:处理过程中存在依次则会执行fallba

2021-01-31 09:56:05 248

原创 (十四)soul源码的Resilience4j体验和原理

(十四)sould的Resilience4j体验和原理目标什么是Resilience4jsould的Resilience4j体验什么是Resilience4jResilience4J是我们Spring Cloud G版本 推荐的容错方案,它是一个轻量级的容错库借鉴了Hystrix而设计,并且采用JDK8 这个函数式编程,即lambda表达式相比之下, Netflix Hystrix 对Archaius 具有编译依赖性,Resilience4j你无需引用全部依赖,可以根据自己需要

2021-01-30 07:14:21 375

原创 (十二)soul源码的divide插件底层原理,负载均衡及ip端口探活

(十二)sould的divide插件底层原理,负载均衡及ip端口探活目标divide插件的类信息divide插件底层原理soul-bootstrap端ip端口探活divide插件的类信息divide的具体使用使用在小节一里有分析了,这里不阐述soul-booostrap依赖包soul-spring-boot-starter-plugin-divide,里面DividePlugin(divide插件),DividePluginDataHandler(divide插件数据处理器),WebSo

2021-01-29 07:43:07 231

原创 (十三)soul的springcloud插件底层原理

((十三)sould的springcloud插件底层原理目标springcloud插件底层原理springcloud插件底层原理springcloud插件的具体使用使用在小节三里有分析了,这里不解释启动一个adminadmin和一个网关,两个order-service,一个eureka我们在SpringCloudPlugin的doExecute打断点从SoulWebHandler#execute, SoulWebHandler是插件链的处理器,依次按照order大小依次遍历插

2021-01-28 23:10:28 242

原创 (十一)soul网关集群演示

(十一)soul网关集群演示目标admin集群下,各个实例修改配置启动三个soul-admin和两个网关,两个order-service,一个eureka启动三个soul-admin和两个网关(网关需要配置eureka信息) ,如下图注意网关的websocket的urls配置:ws://localhost:9095/websocket,ws://localhost:9096/websocket,ws://localhost:9097/websocket因为我们启动了三个admin实

2021-01-27 00:41:00 693 1

原创 (十)soul源码的zookeeper同步数据

(十)soul网关的zookeeper同步数据目标soul-admin怎么开启zookeeper和初始化相应类soul-bootstrap端怎么获取数据官方提供的流程图soul-admin怎么开启zookeeper和初始化相应类首先本地需要启动zookeeper服务soul-admin的配置,要把websocket注释掉soul: database: dialect: mysql init_script: "META-INF/schema.sql" sync:

2021-01-25 16:40:02 110

原创 (九)soul源码的http长轮询同步数据

(九)soul网关的http长轮询同步数据目标soul-admin怎么开启http长轮训和初始化相应类soul-bootstrap的配置和初始化http怎么长时间轮询soul-bootstrap请求admin的接口/configs/listener,具体做什么soul-admin怎么开启http长轮训和初始化相应类怎么开启http长轮训soul-admin的配置soul: database: dialect: mysql init_script: "META-IN

2021-01-24 21:56:20 173 2

空空如也

空空如也

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

TA关注的人

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