- 博客(33)
- 收藏
- 关注
原创 常见限流算法详细解析
介绍实现限流的几种方式,主要是窗口算法和桶算法,两者各有优势。窗口算法实现简单,逻辑清晰,可以很直观的得到当前的 QPS 情况,但是会有时间窗口的临界突变问题,而且不像桶一样有队列可以缓冲。桶算法虽然稍微复杂,不好统计 QPS 情况,但是桶算法也有优势所在。漏桶模式消费速率恒定,可以很好的保护自身系统,可以对流量进行整形,但是面对突发流量不能快速响应。令牌桶模式可以面对突发流量,但是启动时会有缓慢加速的过程,不过常见的开源工具中已经对此优化。
2024-12-08 14:21:19
829
原创 缓存击穿缓存穿透缓存雪崩解析及解决办法
使用一个表格总结以下上面三个问题缓存问题现象原因解决方法生活列子缓存击穿热key过期,大量请求击穿到DB热点数据过期互斥锁、永不过期、提前更新火爆餐厅的招牌菜卖完,顾客总是去后厨跑催促缓存穿透查询不存在的数据,每次都打到DB恶意请求、数据不存在布隆过滤器、缓存空对象、参数校验故意找不存在的人的电话号码缓存雪崩大量缓存同时失效,DB压力突增同时设置过期时间、Redis宕机随机过期时间、多级缓存、熔断降级商场所有商品同时上下架,顾客全往仓库抛。
2024-11-16 19:07:19
668
原创 Netty解密
Netty 支持自定义协议的实现,开发者可以通过轻松实现对自定义协议的解析和封装。物联网(IoT)协议:构建支持自定义物联网协议的服务器或客户端。金融系统:处理需要高性能和高可靠性的自定义金融协议。
2024-11-08 22:15:15
729
原创 我常使用的AI应用助手
画图MidJourney 抠图Segment 图像擦除Lama Cleaner draggan用户使用简单的指向和拖动控件对象进行更改图像。免费云端机器学习平台Google Colab, 类似java中的git hub。对话机器人ChatGPT chatall poe。代码翻译工具AI Code Translator。代码编辑器Cursor chatgpt4。代码编辑器GitHub Copilot。机器学习平台Hugging Face。智能技术文档Supabase。文档阅读ChatDoc。
2023-06-09 12:20:19
364
原创 搞定 90% 的chatgpt提示词模型BACK
外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-PP2yl9m5-1680258625141)(null)]请你清晰地告诉 ChatGPT它要帮你做什么,如果文字描述不清楚的话,可以做个示范。:告诉 ChatGPT完成这个任务可以调用哪个领域的知识,让它提升专业性。:给 ChatGPT交待清楚你做事的背景,清晰地告诉它你希望达到的目标。:告诉 ChatGPT它要做什么,如果有必要的话,可以亲自做个示范。:为 ChatGPT选择一个最适合做这件事情的角色,并且告诉它。
2023-03-31 18:31:04
3561
翻译 ChatGPT 提示的艺术 — 编写清晰有效提示指南
欢迎来到《ChatGPT提示的艺术:编写清晰有效提示指南》!在这个指南中,您将学习到有关如何制定清晰有效的 ChatGPT 提示以促进有趣和信息丰富的对话的一切。无论您是初学者还是经验丰富的 ChatGPT 用户,这本小册都适合您。从了解有效提示的原则到掌握构建清晰简明提示的艺术,您将获得必要的技能和知识,将您的 ChatGPT 对话提升到一个新的水平。在接下来的章节中,我们将涵盖从 ChatGPT 的基础和工作原理到构建引人入胜提示和解决常见问题的高级技巧的所有内容。
2023-03-26 18:24:43
1548
原创 解析单元测试的Mock和InjectMocks
Mockito是一个用于Java应用程序单元测试的开源测试框架。它在开发可测试应用程序中起着至关重要的作用。Mockito用于模拟接口,这样就可以将虚拟功能添加到可以在单元测试中使用的模拟接口中。单元测试是一种软件测试,其中对单个软件组件进行测试。使用Mockito框架的主要目的是通过模拟外部依赖项并在测试代码中使用它们来简化测试的开发。因此,Mockito提供了更简单的测试代码,更容易理解、更容易阅读和修改。...
2022-08-17 20:30:22
5300
原创 docker深入浅出
通过 Docker 这种虚拟化容器技术,我们可以对物理机的资源进行更加合理有效的利用,可以将一台物理机器虚拟化出很多个拥有完整操作系统,并且相互独立的“虚拟计算机”。
2022-07-19 02:06:40
1635
原创 feign深度解析
Feign可帮助我们更加便捷、优雅地调用HTTP APIFeign可以做到使用 HTTP 请求远程服务时就像调用本地方法一样的体验,开发者完全感知不到这是远程方法,更感知不到这是个 HTTP 请求。它像 Dubbo 一样,consumer 直接调用接口方法调用 provider,而不需要通过常规的 Http Client 构造请求再解析返回数据。它解决了让开发者调用远程接口就跟调用本地方法一样,无需关注与远程的交互细节,更无需关注分布式环境开发。...
2022-07-13 02:15:55
911
原创 Nacos注册中心详解
Nacos 致力于帮助您发现、配置和管理微服务。Nacos 提供了一组简单易用的特性集,帮助您快速实现动态服务发现、服务配置、服务元数据及流量管理。Nacos 的关键特性包括:- 服务发现和服务健康监测- 动态配置服务- 动态 DNS 服务- 服务及其元数据管理...
2022-07-11 20:01:18
1325
原创 微服务架构介绍
微服务核心就是把传统的单机应用,根据业务将单机应用拆分为一个一个的服务,彻底的解耦,每一个服务都是提供特定的功能,一个服 务只做一件事,类似进程,每个服务都能够单独部署,甚至可以拥有自己的数据库。这样的一个一个的小服务就是微服务。...
2022-07-11 00:02:53
766
转载 分布式关系数据库剖析
在当下云原生时代,任何软件系统拥有分布式能力似乎成了标配。特别是在目前基础软件国产化的浪潮下,国产数据库百花齐放,大有弯道超车的趋势。在这个领域里面,分布式数据库无疑是当今最热门的赛道...
2022-07-04 19:24:25
2902
翻译 Dapper, a Large-Scale Distributed Systems Tracing Infrastructure
Dapper, a Large-Scale Distributed Systems Tracing Infrastructure最近在研究分布式链路跟踪系统,Google Dapper 当然是必读的论文了,目前网上能搜到一些中文翻译版,然而读下来个人感觉略生硬;这里试着在前人的肩膀上重新翻译一遍这个论文,权当是个人的学习笔记,如果同时能给其他人带来好处那就更好了。
2022-03-22 16:10:26
690
原创 电商互联网术语解释
电商互联网术语解释一、用户相关1、DAU(Daily Active User)日活跃用户数量说明:通常统计一日(统计日)之内,登录或使用了某个产品的用户数(去除重复登录的用户)2、MAU(Monthly Active User)月活跃用户人数说明:通常统计一个月(统计月)之内,登录或使用了某个产品的用户数(去除重复登录的用户)3、PV(Page View)页面浏览量说明:用户每1次对网站中的每个网页访问均被记录1次。用户对同一页面的多次访问,访问量累计。4、UV(Unique Visitor
2022-03-04 18:16:41
2533
原创 如何阅读开源项目源码
如何阅读开源框架的源码 作为一个高级开发人员或者是架构师,为了提升自身的技术水平及为了精通常用的开源框架,需要需要阅读此框架的源代码,那如何能更好的阅读源码呢?本文从阅读源码的目的和如何阅读源码以下两个方面来阐述自己的观点。阅读源码的目的:为什么要看源码:1、提升技术功底:学习源码里的优秀设计思想,比如一些疑难问题的解决思路,还有一些优秀的设计模式,整体提升自己的技术功底 2、深度掌握技术框架:源码看多了,对于一个新技术或框架的掌握速度会有大幅提升,看下框架demo大致就能知道底层的实
2022-03-03 11:31:06
1349
原创 零拷贝原理详解
零拷贝原理详解1. 引言 在nginx、kafka等开源组件的原理和性能调优中,经常会提到零拷贝技术,为了能从原理层面掌握这些常用组件,下面我详细介绍零拷贝的原理。 在介绍零拷贝之前,还有几个概念需要介绍,那就是:用户空间(User space)、内核空间(Kernel space)。 用户空间是指:用户程序代码运行的地方; 内核空间是指:内核代码运行的地方,为了安全,它们是隔离的,即使用户的程序崩溃了,内核也不受影响。当进程运行在内核空间时就处于内核态,当进程运
2022-02-24 20:22:03
572
翻译 亚马逊工程师:我在职业生涯中学到的 8 个重要经验
首先,让我来做一个简短的自我介绍:我叫 Daniel,今年 28 岁,是一名软件工程师。我从 13 岁起就开始学习编程。在工作了八年之后,我在 2019 年进入了亚马逊,并担任 SDE2。大约两年零三个月后,也就是 2021 年,我晋升到了亚马逊的高级 SDE。在本文中,我将与大家分享我在职业生涯中所学到的一些经验,这些经验是我在之前就希望能够学到的。这些经验承载了我的个人经历和个人信仰。但愿这会对你有所帮助。1. 尽管编程很酷,但如果能支持其他同事,你将会取得更大的成就。编程很酷,非常酷。作为软件.
2022-02-22 13:09:40
297
翻译 深入NGINX我们如何设计它的性能和扩展性
英文原文:Inside NGINX: How We Designed for Performance & Scale为了更好地理解设计,你需要了解NGINX是如何工作的。NGINX之所以能在性能上如此优越,是由于其背后的设计。许多web服务器和应用服务器使用简单的线程的(threaded)、或基于流程的(process-based)架构, NGINX则以一种复杂的事件驱动(event-driven)的架构脱颖而出,这种架构能支持现代硬件上成千上万的并发连接。Inside NGINX infogr
2022-02-18 18:25:47
251
原创 秒杀系统设计与关键技术剖析
秒杀系统设计与关键技术剖析1.秒杀系统介绍秒杀介绍秒杀是商家通过少量库存和超低价格的方式吸引用户的一种营销手段,让用户在特定的时间里对一个热销商品进行低价抢购。“秒杀”第一次出现是在 2008 年淘宝推出的“竞价秒杀”功能,当时淘宝看到营销效果非常喜人。现在最出名的秒杀就是 在京东上 秒杀 茅台酒了,每场次的茅台酒抢购,都有一百万以上的用户来抢数量非常有限的茅台酒,还没有到1秒钟,商品就抢完了,这是非常极快。秒杀系统目的。 秒杀系统主要目的是:低价促销抢夺用户。
2022-02-18 17:52:03
2884
转载 REST设计风格
REST 设计风格很多人会拿 REST 与 RPC 互相比较,其实,REST 无论是在思想上、概念上,还是使用范围上,与 RPC 都不尽相同,充其量只能算是有一些相似,应用会有一部分重合之处,但本质上并不是同一类型的东西。REST 与 RPC 在思想上差异的核心是抽象的目标不一样,即面向资源的编程思想与面向过程的编程思想两者之间的区别。面向过程编程、面向对象编程大家想必听说过,但什么是面向资源编程?这个问题等介绍完 REST 的特征之后我们再回头细说。而概念上的不同是指 REST 并不是一种远程服务调
2022-02-14 18:42:53
714
原创 深度学习为什么会兴起
Why is deep learning taking off? 深度学习为什么会兴起?Deep learning is taking off due to a large amount of data available through the digization of the society,faster computation and innovation in development of neural network algorithm.由于数字社会大量数据轻易获取、更快的计算和神经网络算
2022-02-11 17:50:57
615
翻译 软件开发中的著名定律
软件开发中的著名定律https://www.timsommer.be/famous-laws-of-software-development/和其他领域一样,在软件开发的世界中也有一些有趣而著名的定律,开发人员、管理人员还是架构师,都经常在会议或闲谈中提到他们,很多时候我们都只是点头附和,免得让人知道自己其实根本没听说过布鲁克斯(Brooks)、摩尔(Moore)或康威(Conway)这些大佬。在这里,我把这些定律整理出来,分享给大家。这些法律由规则、原则或来自发展世界中伟大而鼓舞人心的人物的名言组
2022-02-11 17:48:01
1878
原创 Gartner(高德纳):2022年重要战略技术趋势
Gartner 2022年重要战略技术趋势将助您协助CEO完成优先任务,达到扩大规模、适应变化和加速增长的预期目标
2022-02-10 19:23:21
1959
1
原创 思恋故乡...
到南方的风中流浪,是我的向往。养育我的北方,便成了思恋的地方。也曾千里万里地回到北方,可再也回不到出发的那个晚上。心如风筝般地系着思念,也系着梦想。尽管北方有我童年的土炕,南方却是我一生奋斗的疆场!在没有季节没有寒冷的城市奔走,更想在下雪的时候,回一趟故乡……...
2022-02-09 14:39:08
125
原创 分布式锁设计与实践
分布式锁设计与实践1. 分布式锁是什么分布式锁即在分布式环境下锁定共享资源,让请求处理串行化,实际表现为互斥锁。分布式锁可以解决业务中的幂等性问题。分布式锁是主要是可重入的排它锁,主要具有如下特点:1)释放锁的节点,一定是持有锁的节点。2)持有锁的节点宕机了,不会因此而出现死锁,就像synchronized一样,当持有锁的线程异常退出了,锁会被自动释放。3)排他性,很好理解,一个节点持有锁,其他节点就不能持有了。4)可重入性,很好理解,持有锁的节点,可以重复持有锁。2. 分布式锁应用场景两
2022-02-09 12:45:55
1106
原创 分布式架构演进之路
一、什么是分布式架构 分布式系统(distributed system)是建立在网络之上的软件系统。 内聚性:是指每一个数据库分布节点高度自治,有本地的数据库管理系统。 透明性:是指每一个数据库分布节点对用户的应用来说都是透明的,看不出是本地还是远程。 在分布式数据系统中,用户感觉不出数据是分布的,即用户不须知道关系是否分割,有无副本,数据存在于那个站点以及事物在哪个站点上执行。 简单来说:在一个分布式系统中,一组独立的计算机展现给用户的是一个统一的整体,就好像是一个.
2022-01-24 00:25:12
205
原创 大型互联网项目架构认知
架构是什么对业务场景抽象后得出的支持骨架,目的是:解决系统的复杂性 比如:为了满足100w日活量,10WQPS,及以后系统扩展,采用 微服务架构架构为业务场景而生、被业务场景而弃架构没有最好、只有“最合适”(人员技术研发能力、业务复杂度、数据规模大小、时间成本、运维能力….)选择架构时候,必须选择最适合公司当下环境的架构。架构目标是什么高性能:系统响应时间(Response time)短,并发量(同时支撑用户请求量)大高可用:任何时候项目都必须可用高可扩展:...
2022-01-23 23:27:06
1308
原创 聚合支付系统设计
1.多种支付方式痛点分析现状随着移动支付的盛行、市面上存在多种移动支付方式:微信、支付宝、云闪付、数字货币、通联支付等等,不同的客户习惯使用的移动支付方式也有所不同,如果商家为了吸引更多的客户消费,使用的系统需要对接这么多第三方支付及常用的银行系统,对一般商户来说都存在很大的挑战,几乎是不可能实现的,具体表现如下:商户运营:支付渠道多,收银效率低多种支付渠道接入成本高支付渠道零散,收银汇总难度高支付后无交易分析,运营凭感觉。商户运营:线上线下消费数据同步较难;营销玩法
2022-01-20 21:08:10
5247
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人