自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

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

原创 滑动窗口

思路:在滑动窗口类型的问题中都会有两个指针。一个用于延伸现有窗口的right指针,和一个用于收缩窗口的left指针。在任意时刻,只有一个指针运动,而另一个保持静止。https://leetcode-cn.com/problems/minimum-window-substring/solution/hua-dong-chuang-kou-suan-fa-tong-yong-si-xiang-by-/https://labuladong.gitbook.io/algo/https://l...

2020-07-01 20:07:22 143

原创 插件化架构Demo[一期]

第三方jar包需要实现模块化平台api包里的PluginService接口,并在META-INF/services/com.aos.api.PluginService文件中声明实现类。要实现一个第三方jar包用于本项目的热部署加载,你需要创建一个实现了PluginService接口的插件类。这个方案提供了完整的SPI模式热部署能力,支持插件的动态加载、卸载和重新加载,适用于需要动态扩展功能的应用场景。构造器初始化 会调用发现器 去调用Loader从第三方jar包里加载实例化service,并放到缓存里。

2025-06-05 20:12:24 656

原创 库存高并发一致性

涵爸 你的猜测是对的,localcache是为了保护热点对tair的服务器的冲击而利用应用服务器来做一层缓冲,以数据的一致性来换取tair服务端的可用性,至于@卧猫 提到的将一份商品库存分为多份,那是技术含量更高的挑战,需要从用户体验,数据一致性和动态分配同步等上面做很多工作,目前还没有很好的解决方案,欢迎一起讨论,呵呵。这条预扣记录大概是怎么样的呢?由于进入热点库的商品都是热卖商品,所以热点库的并发风险相对更高,因此必须控制进入热点库的商品数量,不能太多,而且最好同一个库的热卖商品的售卖时间能错开。

2025-05-22 14:50:51 612

原创 高并发消息高效有序不丢

在钉钉IM早期,我们的核心链路完全依赖metaq做上下游沟通,尽管metaq灾备方面做的很完善了,但一旦发生broker故障,仍有分钟级别的故障恢复时间,钉钉IM作为企业级服务,肯定是不能接受的,所以在后期的改造原则里面,核心的消息推送链路上都确保有两种通道,一是我们自有的rpc框架和LWP协议进行交互,二是通过metaq进行消息传递,两种方式可以做到自由切换,任何一路故障都可以将请求转移到另一方,使用户消息请求尽最大可能触达服务端。钉钉不用顺序消费,是怎么保证用户看到的消息是有序的呢?

2025-05-22 14:48:35 671

原创 在线服务CPU突增100%

现象:服务发布过程中出现两台机器RPC不可用com.taobao.hsf.exception.HSFException: THREADPOOL_BUSYerror message : [HSF-Provider-/33.70.188.29] Error log: Provider’s HSF thread pool is full.止损:集群TOP监控发现异常机器 摘流后外部恢复正常请求量级突增:接口限流任务耗时增大:熔断、摘流、回滚修复HSF内置线程池参数 CORE 50 MAX 720 内核其

2025-05-22 14:43:27 1580

原创 系统建模指导手册

解决方案空间的模型的相关知识在所有的建模书籍中几乎都有描述, 但是很多书籍是直接从用例推导出解决方案空间模型,中间漏掉了问题空间模型,虽然说我们也时常可以得到结果,但却不是完善的,也不是最可靠的推导方法, 所以非常建议大家还是先从用例提炼出问题空间模型,然后再从问题空间模型推导出解决方案空间模型。○ 再比如:评价中,很多对象都可以被评价,而且评价之后还可以回评,问题空间模型是有很多的个,但是共享在把问题空间模型转换成解决方案空间模型的时候就进行了提炼和抽取,最终在解决方案空间只剩下了非常简要的几个模型。

2025-05-22 14:37:44 608

原创 性能优化指导手册

比如说web应用中,一个请求过来的HTTP协议的解析所消耗的CPU,也属于CPU Time的一部分,然后这个请求中请求RPC,协议的encode和decode所消耗的CPU也属于CPU Time的一部分。但在高并发场景下会成为最优QPS瓶颈,假设CPU Time在1ms以内,Wait Time在100ms以上,为了让QPS最大化需要设置数千条线程,由于线程数越多,导致CPU Time又增加了,于是QPS和理想的最大值比又会下降。● 单机600qps时,rt上涨3到4倍,会影响上层业务方的rt。

2025-05-22 14:34:06 1426

原创 架构的本质

因为诉求不确定和多变、人员质量差异、流程规范边界、传达差异等原因,信息熵增和代码腐化不可避免,故而需要架构师根据业务不同阶段选择合适的演进过程,通过方法论、范式、工具来保障业务的诉求吞吐稳定性。通过设计沉淀治理,解决信息熵增和能力腐化问题,满足业务吞吐效率和稳定性。道:哲学与价值观 没有最好只有合适 持续优化没有银弹。

2025-05-22 14:26:14 301

原创 架构师基本功

你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markdown编辑器, 可以仔细阅读这篇文章,了解一下Markdown的基本语法知识。我们对Markdown编辑器进行了一些功能拓展与语法支持,除了标准的Markdown编辑器功能,我们增加了如下几点新功能,帮助你用它写博客:撤销:Ctrl/Command + Z重做:Ctrl/Command + Y加粗:Ctrl/Command + B斜体:Ctrl/Command + I标题:Ctrl/Command + S

2025-05-22 14:19:54 1863

原创 正则表达式匹配

思路一:回溯法 这种匹配思路其实就是不断地减掉s和p的可以匹配首部,直至一个或两个字符串被减为空的时候,根据最终情况来得出结论。如果只是两个普通字符串进行匹配,按序遍历比较即可:if( s.charAt(i) == p.charAt(i) )如果正则表达式字符串p只有一种"."一种特殊标记,依然是按序遍历比较即可 :if( s.charAt(i) == p.charAt(i) || p.charAt(i) == '.' )上述两种情况实现时还需要判断字符串长度和字符串判空的操作。但是

2020-07-10 15:22:36 236

原创 算法 概述

从整体到细节,自顶向下,从抽象到具体的框架思维是通用的,不只是学习数据结构和算法,学习其他任何知识都是高效的下面讲解咯数据结构存储方式和访问方式一、数据结构的存储方式数据结构的存储方式只有:数组(顺序存储)和链表(链式存储)。这句话怎么理解,不是还有散列表、栈、队列、堆、树、图等等各种数据结构吗?我们分析问题,一定要有递归的思想,自顶向下,从抽象到具体。你上来就列出这么多,那些都属于「上层建筑」,而数组和链表才是「结构基础」。因为那些多样化的数据结构,究其源头,都是在链表或者数组上的特殊

2020-07-02 13:45:33 263

原创 回溯算法

从全排列问题开始理解「回溯」算法(深度优先遍历 + 状态重置 + 剪枝)请读者带着以下问题理解回溯搜索算法的思想。1、什么是“树形问题”?为什么为什么是在树形问题上使用“深度优先遍历”?不用深度优先遍历我们还可以用什么?2、什么是“回溯”?为什么需要回溯?3、不回溯可以吗?首先介绍“回溯”算法的应用。“回溯”算法也叫“回溯搜索”算法,主要用于在一个庞大的空间里搜索我们所需要的问题的解。我们每天使用的“搜索引擎”就是帮助我们在庞大的互联网上搜索我们需要的信息。“搜索”引擎的“搜索”和“回溯搜索

2020-07-02 11:04:37 375

Mac JDK 开发环境初始化

Mac JDK 开发环境初始化

2025-07-08

空空如也

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

TA关注的人

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