自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 TransmittableThreadLocal - 线程池中也可以传递参数了

主线程如何通过ThreadLocal将参数传递给线程池中的线程?

2023-11-21 20:38:21 212

转载 centos8因为错误修改/etc/profile文件导致用户登录后错误跳转到重新登录的问题解决

5、修改完成后使用“ctrl + x” 来重启服务器就可以了,重启后就会进入到单用户,这时候就可以正常操作linux服务器了,我们把错误的profile文件中的内容删除掉然后保存。结果重启后输入用户名和密码登录后又自动回到登录页面了,什么情况?想在centos8上安装maven,结果配置环境变量的时候不小心写错了,然后。之后发现所有命令都用不了。...

2022-08-07 11:18:04 921 1

原创 mac m1上安装centos8时遇到的docker 镜像问题 - 系统架构和docker镜像的关系

这几天尝试使用docker-compose编排ruoyi-cloud开源项目,结果因为自己最近才使用mac os系统,没意识到系统架构之间所带来的问题。这里我们要清楚一个问题,就是当前系统上安装了docker后拉取镜像的时候,会根据自身架构自动取寻找合适的镜像!所以我们是不是该思考,docker的原理是什么呢?虚拟机的原理又是什么呢?运行在mac os上的vmware中centos8又是什么呢?可以看到,在mac m1下拉取的docker镜像的架构师。64架构,这不就是mac的架构吗?那么问题怎么来的呢?.

2022-08-04 19:51:06 1356

原创 nacos2.x版本持久化中mysql版本为8.x问题解决

nacos持久化

2022-08-04 08:39:42 842 1

转载 M1 mac使用docker搭建nacos mysql持久化-2022-01 Nacos Server did not start because dumpservice bean construct

mac m1中nacos持久化启动错误

2022-08-03 22:43:10 442

转载 volatile内存语义以及实现 -volatile写和读对普通变量的影响

volatile写和读对普通变量的影响

2022-07-24 11:27:31 257

原创 Nacos、Eureak、Feign原理源码分析

一、AP、CP架构,脑裂问题分区容错性在同等的容错性下,奇数个机器要比偶数个机器更节省资源。因为按照防止脑裂的设置,节点投票数量必须要 > 总结点数 / 2。那么5 / 2 = 2, 6 / 2 = 3,。即5个节点最多允许挂2个,6个节点最多也允许挂2个。因为能选举出leader的前提是投票节点要超过半数节点!为何不建议设置偶数个节点偶数个节点比如6,如果因为网络原因分成了两个2去,每个分区3个节点,都无法超高半数节点3,那么集群将永远无法选出leader,无法对外提供服务。二、阿里

2022-03-13 13:33:59 3420

原创 彻底搞清楚HashMap中的threshold、capacity、size、modCount属性的意义和区别

https://www.processon.com/view/link/621d70145653bb070af9bdf2

2022-03-01 09:00:59 944 3

转载 到底是在数据库(DB)中排序好,仍是在应用程序中排序更优

在网站开发中,到底是在数据库(DB)中排序好,仍是在应用程序中排序更优,这一直是个颇有趣的话题。DBANotes.net博主,在数据库方面比较有研究的冯大辉就这一问题日前和读者明灵(Dragon)作了探讨,本文是关于该问题的总结。 问:请列出在PHP中执行排序要优于在MySQL中排序的缘由? 答:一般来讲,执行效率须要考虑CPU、内存和硬盘等的负载状况,假定MySQL服务器和PHP的服务器都已经按照最适合的方式来配置,那么系统的可伸缩性(Scalability)和用户感知性能(User-perceived

2022-01-24 12:24:48 944

原创 秒杀系统-商品详细页多级缓存实战(三)

文章目录一、后台缓存优化思路二、引入本地缓存减少Redis网络IO2.1 使用concurrentHashMap构建本地缓存2.2 Guava实现本地缓存工具2.2.1 Guava构建本地缓存类2.2.3 引入本地缓存后的代码三、Guava实现布隆过滤器3.1 Guava构建布隆过滤器问题总结四、终结方案4.1 当前不足-主要讲前端问题4.1.1 小流量架构4.1.2 大型网站架构4.2 OpenResty介绍4.3 lua演示效果4.3.1 实战4.3.2 操作4.4 总结数据热点五、京东架构演变分析架构

2022-01-07 22:39:20 605

原创 秒杀系统-商品详细页多级缓存实战(二)

文章目录一、缓存方案引入缓存二、实战-获取商品详情信息(zk分布式锁+本地缓存+Redis)现在有什么问题了?加入分布式锁:ZK分布式锁实现引入本地缓存LocalCache优化后的查询代码分布式锁原理如何保证数据一致性缓存应用场景二、缓存问题缓存击穿问题(热点数据单个key)缓存穿透问题(恶意攻击、访问不存在数据)缓存雪崩(同一时间失效,并发量大)缓存和数据库双写一致性问题四、引入分布式锁一、缓存方案后台问题描述:访问数据库查询商品信息,读多写少。/** * 获取商品详情信息 * * @para

2022-01-05 22:29:45 1140

原创 秒杀系统-商品详细页多级缓存实战(一)

文章目录一、商品模块业务场景介绍二、商品模块技术难点表的设计:打开游览器访问京东详细页问题一:多张表还是一张表存储详情信息为什么商品需要分类?第一个版本:商品+分类第二个版本:商品+分类+品牌第三个版本:商品+分类+品牌+属性第四个版本:商品+分类+品牌+属性+规格商品的搜索三、商品模块展示技术难点商品详情页前端结构单品页流量特点3.1、压测测试3.2、后台四、静态化处理freemarker语法获取值表达式list标签if条件标签Null值的处理日期标签包含标签实战:小流量架构:五、架构方案的问题问题一:问

2022-01-04 19:08:38 709 1

原创 计算机网络协议

文章目录一、从一个HTTP请求来看网络分层原理1、网络分层2、一个HTTP请求的分层解析流程二、HTTP协议2.1 HTTP报文格式2.2 请求报文格式2.3 响应行报文格式2.4 HTTP头字段2.5 常用头字段三、HTTP请求的完整过程四、TCP协议4.1 TCP连接管理4.2 TCP三次握手详解第一次握手第二次握手第三次握手4.3 握手过程中的内核4.4 TCP四次挥手4.5 字节流的协议4.6 数据可靠性传输4.7 滑动窗口协议与累计确认(延时ack)五、HTTPS协议5.1 SSL/TSL摘要算法

2022-01-03 21:55:47 1544 2

原创 Spring之事务底层原理源码解析

文章目录一、`@EnableTransactionManagement`工作原理二、Spring事务基本执行原理三、Spring事务详细执行流程四、Spring事务传播机制五、Spring事务传播机制分类案例分析情况1情况2情况3情况4六、Spring事务强制回滚七、TransactionSynchronization一、@EnableTransactionManagement工作原理开启Spring事务本质上就是增加了一个Advisor,但我们使用@EnableTransactionManagemen

2022-01-03 13:08:40 3679 1

原创 Spring之AOP底层原理源码解析(下)

文章目录一、ProxyFactory选择cglib或jdk动态代理原理二、代理对象创建过程2.1 JdkDynamicAopProxy2.2 ObjenesisCglibAopProxy三、代理对象执行过程四、各注解对应的MethodInterceptor五、AbstractAdvisorAutoProxyCreator六、@EnableAspectJAutoProxy七、Spring中AOP原理流程图一、ProxyFactory选择cglib或jdk动态代理原理ProxyFactory在生成代理对象之

2021-12-31 08:00:12 392

原创 Spring之AOP底层原理源码解析(上)

文章目录一、cglib和JDK动态代理二、ProxyFactory三、Advice的分类四、Advisor的理解五、创建代理对象的方式5.1 ProxyFactoryBean5.2 BeanNameAutoProxyCreator5.3 DefaultAdvisorAutoProxyCreator六、对Spring AOP的理解七、AOP中的概念八、Advice在Spring AOP中对应API九、TargetSource的使用十、Introduction十一、LoadTimeWeaver一、cglib和

2021-12-30 22:39:22 543

原创 Spring之整合MyBatis底层原理源码解析

文章目录一、整合核心思路二、Mybatis-Spring 1.3.2版本底层源码执行流程三、Mybatis-Spring 2.0.6版本(最新版)底层源码执行流程四、Spring整合Mybatis后一级缓存失效问题一、整合核心思路由很多框架都需要和Spring进行整合,而整合的核心思想就是把其他框架所产生的对象放到Spring容器中,让其成为Bean。​比如Mybatis,Mybatis框架可以单独使用,而单独使用Mybatis框架就需要用到Mybatis所提供的一些类构造出对应的对象,然后使用该对象

2021-12-30 20:33:06 927 1

原创 Spring配置类源码剖析

文章目录一、解析配置类总结一下一、解析配置类解析配置类流程图:解析配置类思维脑图:1、在启动Spring时,需要传入一个AppConfig.class给ApplicationContext,ApplicationContext会根据AppConfig类封装为一个BeanDefinition,这种BeanDefinition我们把它称为配置类BeanDefinition2、ConfigurationClassPostProcessor中会把配置类BeanDefinition取出来3、构造一个C

2021-12-30 20:09:03 441

原创 Sentinel中实现的AOP优秀代码学习 - AbstractSentinelAspectSupport

1.8 热点参数限流何为热点?热点即经常访问的数据。很多时候我们希望统计某个热点数据中访问频次最高的 Top K 数据,并对其访问进行限制。比如:商品 ID 为参数,统计一段时间内最常购买的商品 ID 并进行限制用户 ID 为参数,针对一段时间内频繁访问的用户 ID 进行限制热点参数限流会统计传入参数中的热点参数,并根据配置的限流阈值与模式,对包含热点参数的资源调用进行限流。热点参数限流可以看做是一种特殊的流量控制,仅对包含热点参数的资源调用生效。注意:热点规则需要使用@Sentine

2021-12-30 08:38:43 410

原创 Sentinel规则持久化实战及其源码分析

文章目录一、1. Sentinel规则推送模式1.1 原始模式1.2 拉模式1.2.1 拉模式改造1.3 推模式(推荐)1.3.1 基于Nacos配置中心控制台实现推送缺点二、基于Sentinel控制台实现推送2.1 Sentinel Dashboard改造第1步:第2步:测试:微服务接入改造后的Sentinel Dashboard三、热点参数规则失效和解决思路提供两种解决思路四、sentinel规则持久化部分源码分析脑图一、1. Sentinel规则推送模式Sentinel规则的推送有下面三种模式:

2021-12-30 08:34:01 385

原创 JWT实战 & Spring Security Oauth2整合JWT & 整合SSO单点登录

文章目录一、JWT1.1 什么是JWT1.2 JWT组成头部(header)载荷(payload)签名(signature)如何应用1.3 JJWT快速开始创建tokentoken的验证解析token过期校验自定义claims1.4 Spring Security Oauth2整合JWT整合JWT扩展JWT中的存储内容解析JWT刷新令牌一、JWT1.1 什么是JWTJSON Web Token(JWT)是一个开放的行业标准(RFC 7519),它定义了一种简介的、自包含的协议格式,用于在通信双方传递j

2021-12-28 19:58:10 3735

原创 微服务安全Spring Security OAuth2实战

文章目录一、OAuth2.0介绍1.1 应用场景1.2 基本概念1.3 优缺点二、OAuth2的设计思路2.1 客户端授权模式授权码模式简化(隐式)模式密码模式客户端模式2.2 令牌的使用2.3 更新令牌三、Spring Security OAuth2快速开始3.1 授权服务器3.2 整体架构3.3 授权码模式一、OAuth2.0介绍OAuth(Open Authorization)是一个关于授权(authorization)的开放网络标准,允许用户授权第三方应用访问他们存储在另外的服务提供者上的信息,

2021-12-27 21:35:16 5853 4

原创 SkyWalking源码流程图

2021-12-27 09:57:28 315

原创 Skywalking UI 使用详解

文章目录菜单栏控制栏展示栏Global全局维度Service服务维度Instance服务维度Endpoint端点(API)维度拓扑图链路追踪性能剖析告警菜单栏仪表盘:查看被监控服务的运行状态;拓扑图:以拓扑图的方式展现服务之间的关系,并以此为入口查看相关信息;追踪:以接口列表的方式展现,追踪接口内部调用过程;性能剖析:对端点进行采样分析,并可查看堆栈信息;告警:触发告警的告警列表,包括服务失败率,请求超时等;自动刷新:刷新当前页面数据内容;控制栏第一栏:不同内容主题的监控面板,应用

2021-12-27 09:38:47 1067

原创 微服务链路追踪组件Skywalking实战 & 持久化配置 & 高可用部署

文章目录背景:微服务中存在的问题调用链产品选型探针性能对比一、skywalking是什么谁在使用Skywalking1.1 Skywalking主要功能特性1.2 Skywalking整体架构1.3 SkyWalking 环境搭建部署1.3.1 下载 SkyWalking1.3.2 搭建SkyWalking OAP 服务1.4 SkyWalking中三个概念二、SkyWalking快速开始2.1 SkyWalking Agent跟踪微服务2.1.1 通过jar包方式接入2.1.2 在IDEA中使用Skywa

2021-12-26 19:14:48 2815 1

原创 微服务网关GateWay源码流程剖析

怎么找入口?自动配置GateWayAutoConfiguration@Bean 切入点 (使用过程中接触过 核心接口类方法)看不懂netty reator2. spring webflux> spring webmvc切入点DispatcherServlet==== DispatcherHandlerHanderMappingHanderMappingHanderAdapterHanderAdapterHander目的: (带着目的去猜)http://lo.

2021-12-25 15:18:10 300

原创 微服务网管GateWay实战 & Gateway整合sentinel限流

文章目录一、什么是Spring Cloud Gateway1.1 核心概念1.2 工作原理二、Spring Cloud Gateway快速开始2.1 环境搭建1) 引入依赖2) 编写yml配置文件3)测试2.2 路由断言工厂(Route Predicate Factories)配置2.2.1 路径匹配(推荐使用`lb://微服务名称`)2.2.2 时间匹配2.2.3 Cookie匹配2.2.4 Header匹配2.2.5 host主机名匹配2.2.6 Http方法类型匹配2.2.7 uri路由匹配2.2

2021-12-25 11:21:21 1677 1

原创 分布式事务Seata原理源码剖析

文章目录Seata调试环境搭建源码拉取源码编译配置db存储模式启动Seata TC Server服务Seata AT模式分析前提整体机制写隔离读隔离工作机制一阶段二阶段-回滚二阶段-提交回滚日志表Seata工作原理流程图Seat源码流程图核心接口和类ResourceManagerDataSourceManagerAsyncWorkerUndoLogManagerTransactionManagerDefaultTransactionManagerGlobalTransactionDefaultGlobalT

2021-12-24 12:59:03 1305

原创 分布式事务XA、TCC、AT总结

TCC和AT在第一阶段都会直接将事务提交(commit),如果需要回滚,TCC则需要在Cancel阶段自己实现一段业务逻辑来完成数据的回滚。注意,此时是写补偿sql来完成回滚保证数据的一致性。而AT模式会将一阶段执行的sql记录在undo_log表中,然后通过整个undo_log来自动完成回滚,不需要程序员手动写补偿代码。这样也是阿里首推AT模式的原因,一个注解即可搞定分布式事务。其次,TCC可以不依赖于关系型数据库,比如我们的远程操作可能是操作Redis、MongoDB等。因为TCC中的各阶段的逻辑

2021-12-23 22:26:50 2599

原创 SpringCloud微服务接入分布式事务框架Seata实战,【一个注解解决分布式事务】

文章目录一、配置启动Seata Server1.1 环境准备1)指定nacos作为配置中心和注册中心2)同步seata server的配置到nacos3) 启动Seata Server二、Seata如何整合到Spring Cloud微服务2.1 导入依赖2.2 微服务对应数据库中添加undo_log表2.3 微服务需要使用seata DataSourceProxy代理自己的数据源2.4 添加seata的配置1)将registry.conf文件拷贝到resources目录下,指定注册中心和配置中心都是naco

2021-12-23 20:59:35 2177

原创 分布式事务解决方案Seata实战(SpringBoot多数据源)及其原理剖析

文章目录一、分布式解决方案Seata介绍1.1 什么是Seata1.2 Seata的三大角色1.3 AT模式设计思路第一阶段第二阶段整体执行流程1.4 设计亮点1.5 存在的问题性能损耗性价比全局锁二、Seata实战 - 快速开始2.1 Seata Server(TC)环境搭建2.2 db存储模式+Nacos(注册&配置中心)部署步骤一:下载安装包步骤二:建表(仅db模式)步骤三:修改store.mode步骤四:修改数据库连接步骤五:配置Nacos注册中心步骤六:配置Nacos配置中心步骤七:启动S

2021-12-22 15:22:07 3773

原创 分布式事务介绍

文章目录一、事务简介二、本地事务三、分布式事务典型场景3.1 跨库事务3.2 分库分表3.3 服务化3.4 小结四、X/Open DTP模型与XA规范4.1 DTP(Distributed Transaction Processing)模型4.2 XA规范五、两阶段提交协议(2PC,two-phase commit)5.1 两阶段提交介绍5.2 两阶段提交协议(2PC)存在的问题1、同步阻塞问题2、单点故障3、数据不一致5.3 两阶段总结六、三阶段提交协议(Three-phase commit)CanCo

2021-12-21 17:51:33 106

原创 Java-并发线程中的常用设计模式精讲 & 消息积压处理解决方案

文章目录一、终止线程的设计模式1.1 Two-phase Termination(两阶段终止)模式——优雅的终止线程1.2 使用场景二、避免共享的设计模式2.1 Immutability模式——想破坏也破坏不了2.1.1 如何实现Immutability模式2.1.2 使用 Immutability 模式的注意事项2.2 Copy-on-Write(写时复制)模式应用场景2.3 Thread-Specific Storage 模式——没有共享就没有伤害2.3.1 应用场景一、终止线程的设计模式思考:在一

2021-12-13 21:27:35 381

原创 阿里Sentinel中间件中并发锁ReentrantLock & HashMap和Synchronized & ConcurrentHashMap的使用范例

大家都了解锁的使用,但是有时候就想看一些比较规范的代码,想确定或者说验证一下自己所了解的或者学到的是否是正确的,或者说标准的。毫无疑问,我也有这个担忧… 总会觉得自己了解到的使用是不是错误的,所以就想验证一下。下面对于基本锁ReentrantLock和Synchronized的使用是阿里中间件sentinel中的使用,希望可以让我们了解如何正确规范的使用锁。一、ReentrantLock & HashMapcom.alibaba.csp.sentinel.context.ContextUti

2021-12-12 12:09:39 397

原创 Sentinel核心架构源码剖析 & 常见限流算法精讲

文章目录一、Sentinel限流、熔断降级源码架构图二、常见限流算法精讲1.1 计数器法1.2 滑动时间窗口算法1.3 漏桶算法1.4 令牌桶算法三、限流算法小结3.1 计数器 VS 滑动窗口3.2 漏桶算法 VS 令牌桶算法:一、Sentinel限流、熔断降级源码架构图二、常见限流算法精讲1.1 计数器法计数器法是限流算法里最简单也是最容易实现的一种算法。比如我们规定,对于A接口来说,我们1分钟的访问次数不能超过100个。那么我们可以这么做:在一开始的时候,我们可以设置一个计数器counte

2021-12-09 08:58:26 414

原创 Future & CompleteFuture 剖析实战【掌握了future,就掌握了未来】

文章目录一、Callable&Future&FutureTask介绍1.1 Callable和Runnable的区别1.2 Future 的主要功能1.3 利用 FutureTask 创建 Future1.4 如何使用1.5 使用案例:促销活动中商品信息查询1.6 Future 注意事项1.7 Future的局限性二、CompletionService介绍2.1 CompletionService原理2.2 使用案例询价应用:向不同电商平台询价,并保存价格2.3 实现类似 Dubbo 的 F

2021-12-07 21:49:26 4163 2

原创 Java阻塞队列介绍、实战及其原理分析

文章目录一、阻塞队列介绍1.1 Queue接口1.2 BlockingQueue接口1.3 BlockingQueue常用方法示例二、阻塞队列特性2.1 阻塞2.2 是否有界三、应用场景四、常用阻塞队列精讲一、阻塞队列介绍1.1 Queue接口public interface Queue<E> extends Collection<E> { //添加一个元素,添加成功返回true, 如果队列满了,就会抛出异常 boolean add(E e); //添加

2021-12-07 11:26:23 618

原创 Sentinel整合RestTemplate & OpenFeign & Dubbo

文章目录一、RestTemplate整合Sentinel1.1 引入依赖1.2 RestTemplate添加@SentinelRestTemplate注解1.3 添加yml配置1.4 Sentinel RestTemplate 限流的资源规则提供两种粒度:1.5 测试限流1.6 测试降级二、OpenFeign整合Sentinel一、RestTemplate整合SentinelSpring Cloud Alibaba Sentinel 支持对 RestTemplate 的服务调用使用 Sentinel 进

2021-12-06 07:53:20 551

原创 Sentinel控制台规则配置详解

文章目录一、Sentinel控制台介绍1.1 实时监控1.2 簇点链路1.3 流控规则1.3.1 流量控制(flow control)1.3.2 限流阈值类型QPS【===】BlockException异常统一处理并发线程数1.3.3 流控模式直接关联链路1.3.4 流控效果快速失败Warm Up匀速排队降级规则一、Sentinel控制台介绍官网:https://gitee.com/rmlb/Sentinel/wikis/%E6%8E%A7%E5%88%B6%E5%8F%B0Sentinel 提供一个

2021-12-05 19:02:49 988

原创 Alibaba微服务组件Sentinel实战 & 微服务问题总结 & 解决方案

文章目录一、前言1.1 分布式系统遇到的问题1.2 解决方案超时机制服务限流(资源隔离)服务熔断服务降级二、Sentinel: 分布式系统的流量防卫兵2.1 Sentinel 是什么Sentinel和Hystrix对比2.2 Sentinel 工作原理2.2.1 基本概念2.2.2 Sentinel工作主流程2.3 Sentinel快速开始Sentinel资源保护的方式1、API实现2、基于@SentinelResource注解实现Sentinel控制台构建1、引入maven依赖(注意版本)2、获取Sen

2021-12-02 21:51:41 1672 1

空空如也

空空如也

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

TA关注的人

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