自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 MySQL存储碎片

MySQL存储碎片

2023-12-19 09:06:37 410

原创 Druid10-ZK动态配置数据源

1、ZooKeeper 注册数据源​ 通过创建 ZooKeeper 的临时节点,以此实现节点发现和下线,实现动态变更数据源信息,使用案例。 private void register() { //创建注册对象 ZookeeperNodeRegister register1 = new ZookeeperNodeRegister(); register1.setZkConnectString("127.0.0.1:2181"); reg

2022-05-20 21:23:09 598

原创 Druid09-选择器

1、选择器实例化​ HighAvailableDataSource 通过选择器进行切换数据源,使用枚举维护了选择器,并且封装了反射实例化选择器。 public static DataSourceSelector getSelector(String name, HighAvailableDataSource dataSource) { for (DataSourceSelectorEnum e : DataSourceSelectorEnum.values()) {

2022-05-19 18:14:23 264

原创 Druid08-高可用数据源

1、初始化​ HighAvailableDataSource 数据源的初始化,通过Double Check避免重复初始化。 public void init() { if (inited) { return; } synchronized (this) { if (inited) { return; } //dataSour

2022-05-18 19:47:34 260

原创 Druid07-高可用案例

1、简介​ 当系统并发越来高时数据库服务器的压力也是越来越大,最终成为性能的瓶颈,可以采用缓存、读写分离、分库分表等技术来降低服务器压力,Druid 提供了高可用数据源 ( HighAvailableDataSource ) 是基于Druid数据源之上进行了二次封装,通过名称选择数据源的高可用数据源配置。 @Bean(name = "masterDataSource", initMethod = "init", destroyMethod = "close") public DataSourc

2022-05-17 20:35:14 520

原创 Druid06-SQL执行

1、连接对象的封装​ 如果没有配置Filter 则生成具体的连接对象返回,否则将Connection对象包装成 ConnectionProxyImpl。 public Connection createPhysicalConnection(String url, Properties info) throws SQLException { Connection conn; if (getProxyFilters().isEmpty()) {

2022-05-16 21:29:47 1393

原创 Druid05-连接关闭

1、连接关闭​ 连接对象通过DruidPooledConnection 进行了包装,获取连接后都会进行连接的关闭或回收,如使用了类似 Mybatis、JPA 等开源框架通常会调用close方法,连接对象 DruidPooledConnection 重写了close()方法。public void close() throws SQLException { //已关闭状态 if (this.disable) { return; } DruidConnecti

2022-05-14 16:14:28 3654

原创 Druid04-获取连接

1、获取连接​ 获取连接的时候也会先去检查一下连接池是否已经初始化,如果没有初始化则先进行初始化。 public DruidPooledConnection getConnection(long maxWaitMillis) throws SQLException { //maxWaitMillis 从连接池获取连接最大等待时间(默认-1 一直等待) init(); if (filters.size() > 0) {

2022-05-13 14:05:55 1147

原创 Druid03-守护线程

1、CreateConnectionThread 线程1.1 线程创建​ Druid连接池运行后,该线程大部分情况下都处于WAITING状态,通过 jstack -l PID 查看。protected void createAndStartCreatorThread() { if (createScheduler == null) { String threadName = "Druid-ConnectionPool-Create-" + System.identityHash

2022-05-12 20:56:32 340

原创 Druid02-初始化

1、初始化​ Druid的初始化过程,使用都是创建DruidDataSource对象进行配置参数之后,调用init方法进行初始化。​ 方式一:Spring 配置初始化方法 @Bean(name = "dataSource", initMethod = "init", destroyMethod = "close") @Primary public DataSource dataSource() { DruidDataSource dataSource = new DruidD

2022-05-11 19:15:27 1034

原创 Druid01-简介

1、简介JAVA常用的连接池有dbcp、c3p0、tomcat-jdbc、druid和HiKariCP。dbcp、c3p0、tomcat-jdbc是第一代连接池,druid和HiKariCP是第二代连接池, 第一代连接池一般采用单线程同步的架构设计,第二代采用多线程异步架构,目前的大部分工程会使用Druid或HiKariCP。2、连接池​ 数据库连接池基于池化思想,实现了对连接资源灵活的管控。如果每次操作都需要 打开连接,操作,关闭连接,那么创建和销毁 会消耗大量的系统资源。可以通过复用创建好的连接池

2022-05-10 14:50:25 351

原创 临时存放图片

2022-03-17 13:38:58 352

原创 RSA加解密

RSA加解密可用于微信小程序支付可用于微信小程序支付@Slf4jpublic class RSAUtil { private static final String ENCODING = "UTF-8"; private static final String SIGNATURE_ALGORITHM = "SHA256withRSA"; public static String sign256(String data, PrivateKey privateKey) throw

2021-08-19 11:14:04 162

原创 Soul网关源码学习07

Soul网关源码学习07文章目录Soul网关源码学习07ZookeeperZAB协议选举机制Soul数据同步Zookeeperzookeezper 是一个分布式数据一致性的解决方案,基于它可以实现如数据发布/订阅、分布式协调、集群管理、分布式锁、分布式队列等功能,数据模型=文件系统+通知机制。实现了类似文件系统的树结构,每个节点被称为znode。znode可看做是文件系统的中文件夹+文件。说它是文件夹,因为它下面可以放子节点;说它是文件,因为它本身存储了数据。ZAB协议ZAB协议是为zookeez

2021-01-22 01:45:29 112

原创 Soul网关源码学习06

Soul网关源码学习06文章目录Soul网关源码学习06Soul插件SoulConfigurationSoulPluginSoulWebHandlerSoul插件在soul网关中每个请求,都会通过责任链的方式执行相匹配的插件,所以插件也是soul网关的核心,soul网关的插件是可插拔的,并且是插件之间依赖关系是松耦合且插件的功能实现高聚合,其次用户可根据需求定制插件满足自己的需求。SoulConfigurationsoul插件配置类,使用 spring.factories 加载该配置。@Bean

2021-01-21 01:10:40 166 5

原创 Soul网关源码学习05

Soul网关源码学习05文章目录Soul网关源码学习05soul-web 处理流程ChannelOperationsHandlersoul-web 处理流程soul-web基于webflux 可以使用Netty作为应用服务器,Netty是事件驱动的,事件分为两大类 inboud 和 outbound,分别由ChannelInboundHandler 和ChannelOutboundHandler 负责处理,inbound和outbound 是指事件类型。Inbound:事件是由外部触发的,可以认为并

2021-01-20 01:16:19 221 2

原创 Soul网关源码学习04

Soul网关源码学习04文章目录Soul网关源码学习04soul-client 数据同步SoulSpringMvcClientSoulSpringMvcClientConfigurationSpringMvcClientBeanPostProcessorsoul-client 数据同步soul-client 将元数据进行同步到soul-admin,支持dubbo、springMVC、springCloud、sofa等协议。SoulSpringMvcClient@SoulSpringMvcClien

2021-01-19 02:20:22 151

原创 Soul网关源码学习03

Soul网关源码学习03文章目录Soul网关源码学习03soul-admin数据同步DataSyncConfigurationWebsocketCollectorDataChangedEventDispatchersoul-admin数据同步soul-admin 使用 websocket 的方式实现数据同步,会保存与客户端的 session 信息在集合中,数据的更新以广播的方式进行通知。DataSyncConfiguration数据同步的方式,支持多种的配置,先看配置 websocket 的方式。

2021-01-17 02:25:20 158 1

原创 Soul网关源码学习02

Soul网关源码学习02文章目录Soul网关源码学习02数据同步websocket 同步soul-web 客户端数据同步soul网关中路由规则、插件管理、负载均衡策略、限流熔断等配置,都是支持动态变更,数据的同步做到秒级同步。配置变更导致数据的同步支持 websocket、http、zookeeper、nacos 等多种方式,实现soul-admin和soul-web的数据同步。websocket 同步soul-web 启动时与 soul-admin 建立 websocket 连接,之后soul-

2021-01-16 02:57:13 276 1

原创 Soul网关源码学习01

Soul网关源码学习01文章目录Soul网关源码学习01简介准备工作简单测试简介Soul经过不断迭代已经成为高性能、响应式、可扩展的网关一整套解决方案;它参考了Kong、Spring-Cloud-Gateway等优秀的网关,并在此基础上聚合了一系列微服务领域的企业级功能。支持各种语言(http协议),支持 Dubbo,SpringCloud协议。插件化设计思想,插件热插拔,易扩展。灵活的流量筛选,能满足各种流量控制。内置丰富的插件支持,鉴权,限流,熔断,防火墙等等。流量配

2021-01-15 02:07:24 205

空空如也

空空如也

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

TA关注的人

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