
common-pool对象池学习
问如果你要设计一个池化对象,你会怎么做? 设计一个T类型的池子,把T类型的资源都放到池子中。资源负责资源的事情,池子负责管理资源。管理池子要做到资源数量的管理,资源状态的管理,资源创建和销毁,线程安全,资源记录。还要考虑到复用的可能。 让我们看看common-pool2的组成部分吧: ObjectPool: 存取和状态管理的实现。我们直接操作的线程池就是在这里定义的。这里...

问如果你要设计一个池化对象,你会怎么做? 设计一个T类型的池子,把T类型的资源都放到池子中。资源负责资源的事情,池子负责管理资源。管理池子要做到资源数量的管理,资源状态的管理,资源创建和销毁,线程安全,资源记录。还要考虑到复用的可能。 让我们看看common-pool2的组成部分吧: ObjectPool: 存取和状态管理的实现。我们直接操作的线程池就是在这里定义的。这里...

一种优化连接的方案,各种地方都有可能用到这种技术

Java虚拟机 java虚拟机(java virtual machine,JVM),一种能够运行java字节码的虚拟机。作为一种编程语言的虚拟机啊,实际上不知是专用于java语言,只要生成的编译文件匹配JVM对加载编译文件格式要求,任何语言都可以由JVM编译运行。 java源代码被编译成字节码-一个.class的文件。编译的时候class文件会被VM翻译。 ...

spring-data-redis是springboot的一个对redis的封装包。它是springFramework的一个默认的redis驱动jar包。spring已经在这个jar包里面封装了redis各种功能。其中的redisSerializer接口就是用来序列化存入redis数据格式的一种策略。spring官根据不同种情况已经为我们内置了很多序列化器,我们可以通过查看有哪些类实现了...

策略模式的目的是将不同的策略封装起来,每个策略形成一个一个类文件。你可以进行任意的替换。策略模式遵循开闭原则,意即对扩展保持开放,对修改保持关闭。 当你用springboot的时候,会牵扯到如何将类委托给spring容器,如果你按照策略模式的传统写法,就会遇到类似问题。所以,我们应该将不同的策略实现公用的接口,也就是面向接口编程。 首先,我们定义一个接口。 public interfa...

我国劳动节是一个全球性的节日,中国的劳动节可以追溯到1918年,很多先进人士上海、杭州、汉口等城市向人们宣传五一劳动节。后来,北京、上海等地的工人纷纷到街上游行,就这样,五一劳动节在中国流传开来。1949年中华人民共和国成立后,我国将每年的五月一日定为劳动节。 2021年的劳动节是自疫情之后中国的第一个能够群体聚集的首个节日。为了这个节日中国政府将五一前后的周末各调休了一天,用来...
早入蜀都,先到先得。偷渡阴平,直取蜀汉! 这是三国杀中邓艾的武将台词。从这两句中我感受最多的是一种豪言壮志,和一丝凄凉。一个为魏国,一个为蜀国。 不知什么时候,我了解三国后就把蜀国当做了三国的主角,魏国当成了三国的反派,而吴国只是一个配角,但是在读完了关羽败走麦城后,我把吴国定性为了非盗既奸的小人国家。这些都是我个人的主观色彩使然,其实在漫漫的历史长河中,任何人任何事都有两面性...
在上篇《sentinel的几个实体分析》的Node和Metric中,我没有花太长的时间研究。因为sentinel是如何进行qps等指标的统计的,跟StaticNode和Metric有很大的关系。所以,我想单拿出来写一篇。首先,确定一点就是sentinel是基于滑动窗口算法来实现的。 在上一篇《sentinel降级背后的原理解析》已经分析了sentinel是如何驱动的。在里面提到了有...
介绍 Sentinel是阿里中间件团队开源的,面向分布式服务加购的轻量级高可用流量控制组件,主要以流量为切入点,从流量控制、熔断降级、系统负载保护等多个维度来帮助用户保护服务的稳定性。 首先让我们比对下目前业界流行的熔断降级库Netfilix Hystrix的异同。 项目结构 这是sentinel项目的整体结构图: sent...
sentinel中有几个比较重要的实体需要我们了解。 resource resource是sentinel中最重要的一个概念。sentinel通过resource来保护具体的业务代码和其他后方服务。sentinel把复杂的逻辑给屏蔽掉了,用户只需要为受保护的代码或服务定义一个resource,然后定义rule就可以了,剩下的就通通交给sentinel来处理。并...