自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 服务器CPU占用高问题处理记录

Linux服务器CPU占用高问题处理记录

2022-09-09 12:26:17 1982 1

原创 Druid源码分析(九)-- 总结

Druid源码分析(九)-- 总结Druid源码分析(九)-- 总结init数据库连接池总结Druid源码分析(九)-- 总结init经过前面那么多天的分析,我们了解了连接池从初始化、创建连接、获取连接、关闭连接、归还连接到收缩连接的整个流程。下面是init函数的流程数据库连接池下面是数据库连接池执行sql的流程,还有某些情况下会调用shrink 函数收缩连接池总结这么多天源码分析下来,学到了很多东西1.双重校验+锁2.SPI机制3.如果需要监听锁的中断状态,可以使用 lockIn

2022-05-20 15:37:16 264

原创 Druid源码分析(八)-- shrink

Druid源码分析(八)-- shrinkDruid源码分析(八)-- shrinkshrink驱逐连接保活连接填充连接总结Druid源码分析(八)-- shrinkshrink连接池在一些情况下会收缩比如,在0.2.6之后,开始支持动态修改maxActive当新设置的值小于原来的值,不会立刻关闭超出内容的部分,而是等到DestroyThread调度时做shrink才释放。// DruidDataSource.javapublic void shrink(boolean checkTime,

2022-05-19 19:47:35 374

原创 Druid源码分析(七)-- 归还连接

Druid源码分析(七)-- 归还连接Druid源码分析(七)-- 归还连接关闭连接回收连接总结Druid源码分析(七)-- 归还连接关闭连接前一天我们通过postman调接口,看到Druid 获取连接,然后执行sql执行完sql,会关闭连接,// DruidPooledConnection.javapublic void close() throws SQLException { ... DruidAbstractDataSource dataSource = holder.g

2022-05-18 16:41:13 778

原创 Druid源码分析(六)-- 获取连接

Druid源码分析(六)-- 获取连接Druid源码分析(六)-- 获取连接获取连接,执行sqlDruid源码分析(六)-- 获取连接获取连接,执行sql运行 druid-spring-boot-starter 模块的 com.alibaba.druid.spring.boot.demo.DemoApplication在 DruidDataSource#getConnection() 打上断点然后通过postman调用接口可以看到,走进程序断点了,userDao.findOne 通过hiber

2022-05-18 00:23:38 626

原创 Druid源码分析(五)-- 连接池

Druid源码分析(五)-- 连接池Druid源码分析(五)-- 连接池连接池总结Druid源码分析(五)-- 连接池连接池我们可以看到 druid-spring-boot-starter 的配置是初始化连接2个,连接池最大数量是30,最小数量是2个# Druid 数据源配置,继承spring.datasource.* 配置,相同则覆盖spring.datasource.druid.initial-size=2spring.datasource.druid.max-active=30sprin

2022-05-16 21:28:41 554

原创 Druid源码分析(四)-- 初始化DataSource3

Druid源码分析(四)-- 初始化DataSource3Druid源码分析(四)-- 初始化DataSource3连接池总结Druid源码分析(四)-- 初始化DataSource3连接池昨天分析了 filter 和 SPI 机制,今天接着往下看源码// DruidDataSource.java#init()// 连接池connections = new DruidConnectionHolder[maxActive];// 被断开的连接池evictConnections = new Dr

2022-05-14 14:49:37 466

原创 Druid源码分析(三)-- 初始化DataSource2

Druid源码分析(三)-- 初始化DataSource2Druid源码分析(三)-- 初始化DataSource2initSPI机制总结Druid源码分析(三)-- 初始化DataSource2init昨天分析了init 函数的双重校验+锁,今天接着往下看源码// DruidDataSource.java#init()// 获取堆栈信息initStackTrace = Utils.toString(Thread.currentThread().getStackTrace());// 创建数据

2022-05-13 22:30:21 440

原创 Druid源码分析(二)-- 初始化DataSource

Druid源码分析(二)-- 初始化DataSourceDruid源码分析(二)-- 初始化DataSource源码目录测试JDBCDruid监控页面演示debugDruid源码分析(二)-- 初始化DataSource源码目录druid/src/main/java/com/alibaba/druid/├── Constants.java├── DbType.java├── DruidRuntimeException.java├── FastsqlColumnAmbiguousExceptio

2022-05-12 23:59:46 1920

原创 Druid源码分析(一)-- Druid的参数介绍

Druid源码分析(一)-- Druid的参数介绍Druid源码分析(一)-- Druid的参数介绍官方介绍源码运行测试用例Druid源码分析(一)-- Druid的参数介绍官方介绍https://github.com/alibaba/druid/wiki/DruidDataSource%E9%85%8D%E7%BD%AE%E5%B1%9E%E6%80%A7%E5%88%97%E8%A1%A8配置缺省值说明name配置这个属性的意义在于,如果存在多个数据源,监控的时候可以通

2022-05-12 19:23:01 364

原创 Druid初体验

Druid初体验Druid初体验官方介绍下载链接编译代码新建数据运行单元测试插入链接与图片Druid初体验官方介绍Druid是Java语言中最好的数据库连接池。Druid能够提供强大的监控和扩展功能。下载链接Druid下载链接https://github.com/alibaba/druid 对应版本:1.2.8把代码下载下来,然后点击标签,切到1.2.8版本编译代码mvn install -Dmaven.test.skip=true -Dmaven.javadoc.skip=true

2022-05-10 18:49:15 370

原创 shardingsphere源码分析(六)-- 归并引擎

shardingsphere源码分析(六)-- 归并引擎shardingsphere源码分析(六)-- 归并引擎官方介绍debug总结shardingsphere源码分析(六)-- 归并引擎官方介绍链接如下:https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/merge/将从各个数据节点获取的多数据结果集,组合成为一个结果集并正确的返回至请求客户端,称为结果归并。ShardingSph

2021-09-04 00:40:54 472

原创 shardingsphere源码分析(五)-- 执行引擎

shardingsphere源码分析(五)-- 执行引擎shardingsphere源码分析(五)-- 执行引擎官方介绍debug总结shardingsphere源码分析(五)-- 执行引擎官方介绍链接如下:https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/rewrite/ShardingSphere 采用一套自动化的执行引擎,负责将路由和改写完成之后的真实 SQL 安全且高效发送到底

2021-09-02 22:00:40 336

原创 shardingsphere源码分析(四)-- 改写引擎

shardingsphere源码分析(四)-- 改写引擎shardingsphere源码分析(四)-- 改写引擎官方介绍debug总结shardingsphere源码分析(四)-- 改写引擎官方介绍链接如下:https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/rewrite/工程师面向逻辑库与逻辑表书写的 SQL,并不能够直接在真实的数据库中执行,SQL 改写用于将逻辑 SQL 改写为在

2021-09-01 23:17:14 468

原创 shardingsphere源码分析(三)-- 路由引擎

shardingsphere源码分析(二)-- 解析引擎官方介绍链接如下:https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/route/根据解析上下文匹配数据库和表的分片策略,并生成路由路径。 对于携带分片键的 SQL,根据分片键的不同可以划分为单片路由(分片键的操作符是等号)、多片路由(分片键的操作符是 IN)和范围路由(分片键的操作符是 BETWEEN)。 不携带分片键的 SQL 则

2021-08-31 21:59:36 476

原创 shardingsphere源码分析(二)-- 解析引擎

shardingsphere源码分析(二)-- 解析引擎官方介绍链接如下:https://shardingsphere.apache.org/document/current/cn/features/sharding/principle/parse/解析过程分为词法解析和语法解析。 词法解析器用于将 SQL 拆解为不可再分的原子符号,称为 Token。并根据不同数据库方言所提供的字典,将其归类为关键字,表达式,字面量和操作符。 再使用语法解析器将词法解析器的输出转换为抽象语法树。debug我们继

2021-08-30 22:47:05 429

原创 shardingsphere源码分析(一)-- shardingsphere的内核剖析

shardingsphere源码分析(一)-- shardingsphere的内核剖析shardingsphere源码分析(一)-- shardingsphere的内核剖析官方介绍SQL 解析执行器优化SQL 路由SQL 改写SQL 执行结果归并代码debugSQL 解析执行器优化SQL 路由SQL 改写SQL 执行结果归并总结shardingsphere源码分析(一)-- shardingsphere的内核剖析官方介绍链接如下:https://shardingsphere.apache.org/d

2021-08-29 20:17:35 914

原创 shardingsphere初体验-shardingsphere-UI

shardingsphere初体验-shardingsphere-UIshardingsphere初体验-shardingsphere-UI官方介绍下载链接体验shardingsphere-uishardingsphere初体验-shardingsphere-UI官方介绍ShardingSphere-UI 是 ShardingSphere 的一个简单而有用的web管理控制台。它用于帮助用户更简单的使用 ShardingSphere 的相关功能,目前提供注册中心管理、动态配置管理、数据库编排等功能。项

2021-08-25 23:13:05 672 1

原创 shardingsphere初体验-shardingsphere-proxy

shardingsphere初体验-shardingsphere-proxyshardingsphere初体验-shardingsphere-proxy官方介绍下载二进制包引入依赖修改配置启动服务读写分离shardingsphere初体验-shardingsphere-proxy官方介绍定位为透明化的数据库代理端,提供封装了数据库二进制协议的服务端版本,用于完成对异构语言的支持。 目前提供 MySQL 和 PostgreSQL 版本,它可以使用任何兼容 MySQL/PostgreSQL 协议的访问客户

2021-08-25 01:59:40 1013

原创 shardingsphere初体验-shardingsphere-jdbc

shardingsphere初体验-shardingsphere-jdbcshardingsphere初体验-shardingsphere-jdbc下载源码编译代码示例代码启动数据库修改配置shardingsphere初体验-shardingsphere-jdbc下载源码第一步,先把代码down下来https://github.com/apache/shardingsphere下载的时候如果没有修改配置的话,会提示文件名太长这个时候需要修改git的配置git config --global co

2021-08-24 00:47:41 443

原创 ffmpeg+easydarwin把rtmp流转换成m3u8

ffmpeg+easydarwin把RTSP流转换成m3u8ffmpeg+easydarwin把rtmp流转换成m3u8Windows安装ffmpeg安装easydarwin安装Nginx执行命令播放m3u8Linux安装ffmpeg安装easydarwin安装Nginx执行命令ffmpeg+easydarwin把rtmp流转换成m3u8最近需要对接视频监控,要在网页上播放,rtmp流需要装flash插件,很多浏览器都不支持了,所以需要把rtmp流转换成 m3u8 来播放Ffmpeg地址: https

2021-07-24 15:46:26 4219 3

原创 如何修改response的header和body

如何修改response的header和body如何修改response的header和body修改header修改statusCode修改body如何修改response的header和bodyshenyu是基于 webflux 的响应式编程项目,由于之前没有接触过,我在开发 modifyResponse插件的时候,开始有点摸不着头脑,然后大佬推荐了一个链接:https://htmlpreview.github.io/?https://github.com/get-set/reactor-core/

2021-07-13 23:01:04 5143

原创 shenyu自定义插件

shenyu插件开发shenyu插件开发成为Contributor接任务完成任务如何开发一个shenyu自定义插件定义插件定义插件starter自定义插件使用tipsshenyu插件开发年初学习 soul 网关的时候,写了一系列入门文章。最近发现 soul 项目进入了 apache 孵化基金会,并且改名为shenyu。当时发现 shenyu 发了几个issue,我接了其中一个,由于当时正在迁移仓库到apache,加上我不熟悉插件开发流程,最后我花了2个月才完成这个任务。下面说下我完成issue的经历。

2021-07-12 21:59:34 2037 4

原创 Linux环境下移动一个文件夹下的所有文件到另一个文件夹

Linux环境下移动一个文件夹下的所有文件到另一个文件夹最近需要把一个环境里的文件,迁移到另一个环境里去,迁移之前我先做了文件备份,然后网上查了下命令。研究命令#移动a文件夹下的所有文件到b文件夹mv /a/* /b 但是如果有重名的子文件夹或者文件的话,这个命令会一直提示是否需要overwrite然后我查到#强制移动a文件夹下的所有文件到b文件夹,如果有重复会备份文件mv -fb /a/* /b 查询问题命令很快执行完,我以为任务完成了,后面测试反馈有些文件找不到,我就去找问题

2021-06-24 16:44:09 20908 3

原创 idea修改代码重启不生效,需要maven compile才生效

idea修改代码重启不生效,需要maven compile才生效idea修改代码重启不生效,需要maven compile才生效方法一方法二方法三方法四总结idea修改代码重启不生效,需要maven compile才生效最近我重装了电脑,然后新下载的idea,修改完代码之后,重启服务,代码不生效,必需重新maven clean compile才生效,然后我在网上找了好几种解决方法。方法一右上角-edit configurations,设置update为Update classes and resou

2021-06-21 15:49:47 9350 12

原创 soul源码解读(十八)-- resilience4j插件原理分析

soul源码解读(十八)resilience4j插件使用resilience4jresilience4j插件是网关用来对流量进行限流与熔断的可选选择之一。resilience4j为网关熔断限流提供能力。插件使用1.启动 admin,打开 resilience4j 插件开关2.在 bootstrap 项目的 pom 文件引入 resilience4j 插件的相关依赖,启动 bootstrap <!-- soul resilience4j plugin start--> <

2021-02-06 01:25:37 593

原创 soul源码解读(十七)-- hystrix插件原理分析

soul源码解读(十七)hystrix插件使用源码分析基于信号量基于线程hystrixhystrix插件是网关用来对流量进行熔断的核心实现。使用信号量的方式来处理请求。插件使用1.启动 admin,打开 hystrix 插件开关2.在 bootstrap 项目的 pom 文件引入 hystrix 插件的相关依赖,启动 bootstrap <!-- soul hystrix plugin start--> <dependency> <groupI

2021-02-04 01:46:20 135

原创 soul源码解读(十六)-- rateLimiter插件原理分析

soul源码解读(十六)使用rateLimiter分析源码官网的介绍和流程图如下:限流插件,是网关对流量管控限制核心的实现。可以到接口级别,也可以到参数级别,具体怎么用,还得看你对流量配置。使用 rateLimiter 插件,我们需要安装 redis ,这里可以参考我之前写的文章Windows下部署redis主从、哨兵(sentinel)、集群(cluster)使用rateLimiter1.启动 admin,打开 rateLimiter 插件开关2.在 bootstrap 项目的 po

2021-02-01 22:19:44 211

原创 soul源码解读(十五)-- springcloud插件原理分析

soul源码解读(十五)准备工作sprigncloud插件分析总结准备工作照着之前的文章启动好服务sprincloud插件初体验1.启动 admin ,打开 springcloud 插件开关2.启动 eureka 服务3.在 bootstrap 的 pom.xml 文件中放开 springcloud plugin 和 eureka 依赖的注释,加上 eureka 配置,然后启动 bootstrap 服务4.启动两个 soul-examples-springcloud 项目,端口分别为8884和

2021-01-30 22:54:56 158 1

原创 soul源码解读(十四)-- 插件链

soul源码解读(十四)soul的插件链总结soul的插件链前两天分析 divide 插件的时候,留了个坑,今天就来讲讲 soul 的插件链,把这个坑补上。我们先看下下面这段代码,已经在前面的文章中出现了几次了,今天就来具体分析分析。// SoulWebHandler.javapublic Mono<Void> execute(final ServerWebExchange exchange) { return Mono.defer(() -> { if (t

2021-01-30 02:05:20 272

原创 soul源码解读(十三)-- http服务探活

soul源码解读(十三)http服务探活admin探活服务注册服务下线总结http服务探活官方文档写的是(官方文档地址): ip + port 检测 在soul-admin 会有一个定时任务来扫描 配置的ip端口,如果发现下线,则会去除该 ip + port 还有两个配置可以控制是否检测和检测间隔时间 soul.upstream.check:true 默认为 ture,设置为false,不检测 soul.upstream.scheduledTime:10 定时检测时间间隔,默认

2021-01-29 01:45:37 539

原创 soul源码解读(十二)-- divide插件原理分析

soul源码解读(十二)divide插件原理分析插件调用总结divide插件原理分析1.启动 admin 和 bootstrap2.启动两个 soul-examples-http 服务,端口号分别为8188、81893.用 postman 调用接口 http://localhost:9195/http/order/findById?id=3插件调用发现程序入口在 SoulWebHandler#handle 。handle 会调用 execute() 去执行具体的插件逻辑(这里埋个坑,后面会写篇

2021-01-27 23:31:53 252

原创 soul源码解读(十一)-- 数据同步总结

soul源码解读(十一)数据同步初始化更新配置总结数据同步同步类型实现方式优点缺点websocket引入jar即可使用简单,双向通信,增量更新要注意断线重连zookeeper需要单独安装zookeeper如果系统本身有用到zookeeper,可以很方便的集成依赖zookeeper,zk频繁写性能不好http引入jar即可不需要额外安装第三方系统不是传统的长轮询,每次轮询都会重新发一个http请求nacos需要单独安装nacos如果系统本身有

2021-01-27 00:20:09 186

原创 soul源码解读(十)-- 数据同步之nacos

soul源码解读(十)数据同步之nacos安装nacos启动 admin启动bootstrap如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入数据同步之nacos安装nacos先从官网下载安装包 https://github.com/alibaba/nacos/rel

2021-01-26 00:13:49 201

原创 soul源码解读(九)-- 数据同步之http长轮询总结

soul源码解读(九)数据同步之http长轮询总结bootstrap端设置60s轮询的秘密bootstrap端fetch数据小细节总结数据同步之http长轮询总结bootstrap端设置60s轮询的秘密前两天看代码的时候,一直没找到 bootstrap 端到底是在哪里设置的每隔60轮询一次 admin// HttpSyncDataService.java public void run() { //省略其他代码 while (RUNNING.get()) {

2021-01-23 23:30:29 159 1

原创 soul源码解读(八)-- 数据同步之http长轮询原理分析

bootstrap 端接收流程看到下面的日志,说明 bootstrap 也用了 http 长轮询来同步数据。2021-01-22 00:09:40.097 INFO 19916 --- [ main] .s.s.b.s.s.d.h.HttpSyncDataConfiguration : you use http long pull sync soul databootstrap 启动之后,发现 admin 断点进了这边 HttpLongPollingDataChangedLis

2021-01-23 00:25:15 168

原创 soul源码解读(七)-- 数据同步之http长轮询初体验

soul源码解读(七)数据同步之http长轮询admin 端同步数据流程数据同步之http长轮询zookeeper、websocket 数据同步的机制比较简单,而 http 同步会相对复杂一些。Soul 借鉴了 Apollo、Nacos 的设计思想,取其精华,自己实现了 http 长轮询数据同步功能。注意,这里并非传统的 ajax 长轮询!下面是 soul 官网上的图http 长轮询机制如上所示,soul-web 网关请求 admin 的配置服务,读取超时时间为 90s,意味着网关层请求配置服务最

2021-01-22 01:42:52 232

原创 soul源码解读(六)-- 数据同步之zookeeper

soul源码解读(六)数据同步之zookeeperadmin 发布消息流程bootstrap 端接收流程总结数据同步之zookeeper基于 zookeeper 的同步原理很简单,主要是依赖 zookeeper 的 watch 机制,soul-web 会监听配置的节点,soul-admin 在启动的时候,会将数据全量写入 zookeeper,后续数据发生变更时,会增量更新 zookeeper 的节点,与此同时,soul-web 会监听配置信息的节点,一旦有信息变更时,会更新本地缓存。1.修改 admi

2021-01-20 22:10:56 113

原创 soul源码解读(五)-- 数据同步之websocket

soul源码解读(五)数据同步之websocket总结:数据同步之websocket今天我们来看下 soul admin 与 bootstrap 之间数据同步的源码。官网链接如下:https://dromara.org/zh-cn/docs/soul/dataSync.html先来张流程图从第一天的启动日志我们发现它们是通过 websocket 来进行通信的。看 admin 的配置发现,soul 数据同步有4种方式,分别是 websocket 、zookeeper 、http 、 nacos

2021-01-19 23:20:39 221

原创 soul源码解读(四)-- springcloud 插件初体验

soul源码解读(四)springclouddebug总结:springcloud我们今天体验下 soul 的 springcloud 插件。1.启动 admin ,打开 springcloud 插件开关2.查看下 soul-examples 模块里的 soul-examples-springcloud 项目,在 pom 文件里可以看到示例代码用的是 eureka<dependency> <groupId>org.springframework.cl

2021-01-19 00:53:00 327 1

空空如也

空空如也

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

TA关注的人

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