自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

Loving you

每个人都是自己的国王,在自己的世界里纵横跋扈,你不要听我的,但也不要让我听你的。

  • 博客(122)
  • 资源 (7)
  • 收藏
  • 关注

原创 MySQL 索引原理

1.1 索引的优点1.2 索引的缺点1.3 如何确定要索引的数据列1.4 MySQL 使用索引的方式1.5 索引原理

2017-09-04 23:06:48 467

原创 Day10 Druid 小结2

一、druid.pool.ha 小结Druid 中 ha 的数据源选择器有:NamedDataSourceSelectorRandomDataSourceSelectorStickyRandomDataSourceSelector数据源节点的变更的监听和通知,是一个观察者模式,可以及时的监听 zk 中数据源节点信息的变更,从而观察者——poolUpdater可以及时的更新数据源连接池。HighAvailableDataSource 初始化时便会通过选择器去选择数据源,同时通过 2 个线程异步

2022-05-21 08:01:12 200

原创 Day09 ha数据源节点的变更的监听和通知

一、数据源节点的变更的监听和通知NodeEventTypeEnum 类定义了两种数据源节点变更事件类型:增加节点、删除节点。NodeEvent 定义数据源节点更新事件的详细信息。NodeListener 是一个抽象类,负责监听数据源节点信息的改变,并会在 init 方法中,添加 PoolUpdater 作为观察者。 /** * Add the given PoolUpdater as the Observer. * * @see #setObserver(Obser

2022-05-20 01:15:13 200

原创 Day08 Druid——HighAvailableDataSource 中的数据源维护

Day08 Druid——HighAvailableDataSource 中的数据源维护HighAvailableDataSource 是一个包含多个数据源对象的数据源类。一、HighAvailableDataSource 的初始化在获取高可用数据源的连接的时候,便会进行初始化操作: public Connection getConnection() throws SQLException { // 初始化 init(); // 通过选择器获取

2022-05-19 00:31:50 334

原创 Day07 Druid ha中的数据源选择器——DataSourceSelector

DataSourceSelectorDruid 中的数据源选择器都会实现 DataSourceSelector 接口:public interface DataSourceSelector { /** * Return a DataSource according to the implemention. */ DataSource get(); /** * Set the target DataSource name to return.

2022-05-18 01:00:19 366

原创 Day06 Druid 的事务实现

Day06 Druid 的事务实现今天分析下 pool 下的 xa 包:package com.alibaba.druid.pool.xa;一、XA 协议XA 协议是由 X/Open 组织提出的分布式事务处理规范,主要定义了事务管理器 TM 和局部资源管理器 RM 之间的接口。Mysql 从 5.0 版本开始,InnoDB 存储引擎已经支持 XA 协议。1. 两阶段提交分布式事务的两阶段提交是把整个事务提交分为 prepare 和 commit 两个阶段:​ 第一阶段,事务协调者向事务参与者发

2022-05-17 00:54:04 855

原创 Day05 Druid 小结

一、小结Druid 连接池是阿里巴巴开源的数据库连接池项目。Druid 连接池为监控而生,内置强大的监控功能,监控特性不影响性能。监控功能依托于StatFilter、LogFilter,Druid 中常用的过滤器还有Filter、StatFilter等。另外Druid 连接池对于连接的各种处理的考虑也是非常全面:连接池对象、连接对象的创建和初始化连接的获取连接的释放和回收连接获取、回收等异常情况的处理ExceptionSorter :在数据库服务器重启、网络抖动、连接被服务器关

2022-05-15 00:01:42 516

原创 Day04 Druid 中的一些异常处理

分析一下 Druid 中对于异常情况的一些处理。一、Druid 中自定义了哪些异常?pool 包下比较关键的一些异常有:DataSourceClosedExceptionDataSourceDisableExceptionDataSourceNotAvailableExceptionGetConnectionTimeoutException当获取连接时,如果数据源是处于关闭状态,那么就会抛DataSourceClosedException异常,当数据源不可用时,就会抛 DataSource

2022-05-14 00:39:22 1164

原创 Day03 Druid 中过滤器链的装载和使用

一、过滤器的装载Druid 中过滤器的管理工作,主要是在 FilterManager 类中实现。其中 FilterManager#loadFilter() 负责加载 filter 并放入 filter集合中。public static void loadFilter(List<Filter> filters, String filterName) throws SQLException { if (filterName.length() == 0) { return; }

2022-05-13 00:17:04 331

原创 Day02 Druid 如何初始化、添加、销毁、获取连接

Druid 如何初始化、添加、销毁、获取连接一、Druid 如何初始化创建数据库连接在执行 DruidDataSource#init() 方法时,会初始化存放连接的数组conections,然后启动两个线程(1)CreateConnectionThread,动态在 connections 数组中添加连接(2)DestroyConnectionThread,动态删除activeConnections很久不用的连接。初始化连接:while (poolingCount < initialSize

2022-05-12 00:20:31 1026

原创 Spring生态中如何使用 Druid & Druid 如何初始化数据库连接池

一、使用 DruidSpring Boot 项目中配置数据库连接池为 Druid 并启动项目,Spring 上下文初始化完成后会初始化 DruidDataSource, 如下图:核心类:DruidDataSourceAutoConfigure 负责初始化 DruidDataSourcecom.alibaba.druid.pool.DruidDataSource 负责创建高效可管理的数据库连接池二、 druid-spring-boot-starter 源码DruidDataSourceA

2022-05-11 01:17:41 2149

原创 Soul网关(十九)总结02

Soul总结02Soul 回顾架构收获与展望收获展望Soul 回顾Soul 是一个基于 Netty 的、反应式编程的、支持多种RPC请求类型的、高性能的、插件化的、动态配置的、支持多种流量控制手段的网关。Soul 灵活的配置以及丰富的插件,可以提供很多开箱即用的能力。支持各种语言(http协议),支持 dubbo,springcloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。流量配置动态化,性能极高,网关

2021-02-06 03:02:06 2321 1

原创 Soul网关(十八)----context-path-mapping 插件和 sign 插件

context-path-mapping 插件和 sign 插件context-path-mapping插件使用关键源码sign 插件使用源码分析context-path-mapping插件​ context-path-mapping插件用于对请求URI进行重写使用在soul-bootstrap的 pom.xml 文件中添加 context_path 的支持。 <dependency> <groupId>org.dromara</groupId>

2021-02-05 01:31:45 1269 2

原创 Soul网关总结01

Soul网关总结011 插件调用链2 数据同步2.1 Websocket 数据同步https://blog.csdn.net/wu2304211/article/details/1129150592.2 Zookeeper 数据同步2.3 HTTP 长轮询同步数据3 负载均衡4 容错4.1 Hystrix 总结5 限流5.1 RateLimiterPlugin 限流插件5.2 限流总结1 插件调用链总结:​ 每一个插件都自定了一个 spring boot starter。soul-bootstrap

2021-02-03 22:50:24 1055

原创 Soul网关(十六)---- 请求的拦截和重写

waf 插件和 rewrite 插件waf 插件简介使用1)首先在 soul-admin 中开启 waf 插件2)soul-bootstrap 的 pom 文件中添加 waf 插件starter 的依赖3)然后在 soul-admin 的 waf 插件中添加 过滤器 和 规则 对非法请求/异常请求进行拒绝源码分析waf 插件关键源码解读:waf 插件总结rewrite 插件简介使用1)首先在 soul-admin 中开启 rewrite 插件2)soul-bootstrap 的 pom 文件中添加 rewr

2021-02-01 20:24:41 1360

原创 Soul网关(十五)---- 请求限流

Soul 中的请求限流Soul 中的请求限流RateLimiterPlugin 限流插件限流方案:令牌桶算法:Soul 中 RateLimiter 插件的使用常用限流算法漏桶算法令牌桶算法对比限流实现关于限流的一些经验总结Soul 中的请求限流RateLimiterPlugin 限流插件限流方案:​ 限流算法:令牌桶算法​ 流程图:令牌桶算法:速率:令牌桶填充令牌的速率。等同于:可以匀速处理 QPS=令牌填充速率 的请求。容量:令牌桶可以保存的最大令牌数。等同于:一秒内可以执行的最大请求

2021-01-31 00:51:19 1170 2

原创 Soul网关(十四)---- Soul 中的容错保护(1)

Soul 中的容错保护Soul 中的容错保护HystrixHystrix简介soul 中的 Hystrix 插件Hystrix处理详解:总结Hystrix 的工作原理Soul 中的容错保护HystrixHystrix简介Hystrix 由 Netflix 发布的针对微服务分布式系统的熔断保护中间件。soul 中的 Hystrix 插件在「反应式编程&插件调用链」一文中,已经分析过插件的调用链,请求进来会默认走以下 3 个前置插件,其中就包括 Hystrix 插件HystrixPlugi

2021-01-30 01:13:28 511

原创 Soul网关(十三)---- Tars 框架在Soul中的应用

TarsRPC 框架 —— Tars简介Tars 是基于名字服务使用 Tars 协议的高性能 RPC 开发框架,配套一体化的运营管理平台,并通过伸缩调度,实现运维半托管服务。设计思想Tars的设计思路是采用微服务的思想对服务进行治理,同时对整个系统的各个模块进行抽象分层,将各个层次之间相互解耦或者松耦合。整体架构整体架构的拓扑图主要分为2个部分:服务节点与公共框架节点(除了服务节点以外的服务)Tars 框架源码待深入研究​ Tars Docs​ Tars GitHubTars

2021-01-29 01:27:20 562 2

原创 Soul网关(十二)---- 负载均衡客户端 Ribbon 和 RPC 框架 Sofa

Ribbon 和 sofa-rpcSpring Cloud中的客户端负载均衡——RibbonSOFARPC功能特性Bolt 协议基本使用XML架构图模块划分sofa-rpc 框架源码待深入研究Spring Cloud中的客户端负载均衡——RibbonSpring Cloud 生态: Eureka 服务治理 Ribbon 负载均衡 Feign API调用 Hystrix 容错保护 Zuul API网关 Gateway 响应式网关 Config 配置中心 Sleuth 请

2021-01-28 00:31:52 826

原创 Soul网关(十一)反应式编程&插件链调用源码分析

Soul网关(十一)Soul 中的反应式编程Soul 插件链调用源码分析Divide 插件源码分析Soul 中的反应式编程soul-bootstrap 引入了 webflux 依赖来实现反应式编程: <dependency> <groupId>org.springframework.boot</groupId> <artifactId>spring-boot-starter-webflux&l

2021-01-27 02:19:29 291

原创 Soul网关(十)---- 多soul-admin与多soul-bootstrap的数据同步

演示多个 soul-admin 和 多个 soul-bootstrap 数据同步分别在 9095 端口、9096 端口启动 soul-admin;分别在 9197 端口、9198端口启动 soul-bootstrap;在其中一个 soul-admin 改动divide选择器其中的一个rule:将精确匹配URL 由 /http/order/findById 改为 /http/order/findById111改完之后可以看到另外一个 soul-admin 中此条规则也同步更新了。========

2021-01-26 00:02:45 586

原创 Soul网关(九)---- Nacos同步数据

Nacos 数据同步soul-admin 监听数据变化并同步到 nacossoul-admin的Nacos配置类 NacosConfiguration 初始化bean时通过 NacosFactory 创建配置服务。NacosDataChangedListener 监听器会监听配置的变化,并将变化的配置存入本地内存,然后通过 nacos 的配置服务将变化的数据同步到 nacos 中: // 将变化的数据同步到 nacos 中 @SneakyThrows private void publi

2021-01-24 01:27:24 429

原创 Soul网关(八) ---- HTTP 长轮询同步数据

Soul网关 ---- HTTP 长轮询同步数据HTTP长轮询机制:soul-bootstrap请求 soul-admin 的配置服务(/configs/listener接口),soul-bootstrap设置了读取超时时间为 90s,意味着soul-bootstrap请求soul-admin 的配置服务(/configs/listener接口)最多会等待 90s,这样便于 soul-admin 及时响应变更数据,从而实现准实时推送。soul-bootstrap 通过HTTP长轮询soul-admi

2021-01-23 01:50:50 288

原创 Soul网关(七)---- zookeeper同步数据

开启zookeeper数据同步1.soul-bootstrap引入soul-spring-boot-starter-sync-data-zookeeper依赖: <!--soul data sync start use zookeeper--> <dependency> <groupId>org.dromara</groupId> <artifactId>soul-spring-boot-

2021-01-22 01:20:05 197

原创 Soul网关(六)---- Websocket 同步数据

开启数据同步soul-admin 支持在配置文件 application.yml 中指定与网关的数据同步策略(默认采用 websocket)。还支持 http、zookeepersoul: database: dialect: mysql init_script: "META-INF/schema.sql" sync: websocket: enabled: true # zookeeper: # url: localhost:21

2021-01-21 01:41:34 584 1

原创 Soul 网关(五)---- Spring Cloud 插件

Spring Cloud 插件介绍该插件是用来将http协议 转成springCloud协议 的核心。soul会从springCloud的注册中心上面,根据应用名称获取对应的服务真实ip地址,发起http代理调用。Spring Cloud 插件使用1.首先启动 soul-admin2.然后在 soul-bootstrap 的po m文件里添加soul-spring-boot-starter-plugin-springcloud 以及 eureka的依赖、 <dependency&

2021-01-20 01:24:18 315

原创 Soul 网关(四)---- Plugin 的初始化流程分析 & Sofa 插件的使用

Plugin 的初始化流程分析 & Sofa 插件的使用Plugin 的初始化流程分析启动 soul-bootstrap 可以看到日志输出了加载的一些 plugin :2021-01-18 22:14:10.685 INFO 71824 --- [ main] o.d.s.w.configuration.SoulConfiguration : load plugin:[global] [org.dromara.soul.plugin.global.GlobalPlug

2021-01-19 01:28:48 444 3

原创 Soul网关(三)---- dubbo 插件

dubbo 插件dubbo插件是将http协议 转换成dubbo协议 的插件,也是网关实现dubbo泛化调用的关键。1.启动 soul-admin、soul-bootstrap2.在soul-admin的插件管理中将 dubbo 插件设置为开启3.在dubbo插件的配置中,配置 zookeeper 地址,这里配置的本地zk{"register":"zookeeper://localhost:2181"} 或者 {"register":"nacos://localhost:8848"}

2021-01-17 02:23:54 1214 1

原创 Soul网关(二)---- divide 插件代理 HTTP 请求

soul-examples-http运行examples下面的 http服务启动 soul-examples-http,默认端口 8188,可以看到启动时的日志:divide 插件divide插件是网关处理 HTTP 请求的核心处理插件。divide插件是进行http正向代理的插件,所有http类型的请求,都是由该插件进行负载均衡的调用。选择器和 规则选择器和规则是soul网关中最灵魂的东西。掌握好它,你可以对任何流量进行管理。通俗易通的解释:一个插件有多个选择器,一个选择器对应多种规则。

2021-01-16 01:24:45 615

原创 Soul 网关(一)---- 架构设计简介、soul-admin、soul-bootstrap

Soul 网关(一)Soul 是一个异步的,高性能的,跨语言的,响应式的API网关。今天先来整体了解一下 Soul 的结构。Soul 架构图两大部分:Soul-Admin(Soul 网关管理系统) 和 Soul-Cluster(网关Soul 集群)soul-admin (soul 网关的管理系统)soal-admin 依赖 MySQL,首先我们创建 soul 数据库,创建所需要的表,一共 12 个。然后启动 soul-adminsoul-admin 默认端口 9095 ,访问 http

2021-01-15 03:06:35 5299

原创 Javac 编译器

要点: 1、Javac 如何将 Java 的源代码转化为 class 字节码? 2、Javac 的语法树结构; 3、Javac 的详细工作流程; 4、Java 中如何实现内部类? 5、Javac 与其他编译器的比较;

2017-10-01 11:15:44 1136 1

原创 设计模式----策略模式

策略模式

2017-03-22 21:10:55 395

原创 设计模式概述及六大原则

设计模式概述

2017-03-22 12:23:29 383

原创 二、构建Spring源码环境

聚焦Spring源码----搭建Spring源码环境

2017-03-18 12:20:57 723

原创 一、Spring介绍

聚焦Spring源码----Spring概述

2017-03-16 22:57:46 564

原创 Leetcode 287. Find the Duplicate Number

Leetcode :Find the Duplicate Number(找数组中的重复元素)

2017-03-15 22:17:13 348

原创 Leetcode 142. Linked List Cycle II

给定一个链表,如果链表有环,返回链表环起始结点,否则返回null

2017-03-14 23:17:31 297

原创 LeetCode 141. Linked List Cycle

判断链表是否有环

2017-03-14 22:32:59 270

原创 Leetcode 143. Reorder List(链表重新排序)

Reorder List

2017-03-13 21:54:37 399

原创 Leetcode 86. Partition List(链表划分)

Partition List(链表划分)

2017-03-13 20:45:45 450

java邮件发送客户端

基于java Mail API开发的图形化邮件发送客户端。博客地址:http://blog.csdn.net/wu2304211 内有项目详细描述。

2016-12-28

gcc和gdb的使用

教你如何再linux环境下使用GCC和GDB

2016-03-18

小型编程游戏软件

用这个软件可按照模板编写自己的游戏程序,容易上手,可创建属于自己的游戏人物。赶紧下载试试吧~

2015-08-06

最常用的Eclipse快捷键

最常用的Eclipse快捷键 Shift + Alt + s 快速生成构造函数 Ctrl + N 新建类 Ctrl + F6 切换编辑窗口 Ctrl + D 删除当前行 Ctrl + M 放大当前工作窗口 ......等等,下载资源,查看全部内容

2015-08-06

Java图形界面程序代码

Java图形界面程序源代码,可自由画出想要的任何图形。

2015-08-06

书资源开发

水资源论文,大学选修课精品论文,如何节水,如何高效的利用水资源

2015-07-27

大学物联网专业培养方案

最权威的的大学物联网发展大纲,包含课程设置,学时设置,学位课程安排等诸多内容

2015-07-27

空空如也

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

TA关注的人

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