程序员
文章平均质量分 86
差点儿码不动
这个作者很懒,什么都没留下…
展开
-
程序员不可不知的Linux性能工具
前言在实际开发中,有时候会收到一些服务的监控报警,比如CPU飙高,内存飙高等,这个时候,我们会登录到服务器上进行排查。本篇博客将涵盖这方面的知识:Linux性能工具。一次线上问题排查模拟背景:服务在平稳运行一段时间后,CPU突然飙高。通过top命令,可以确认下,到底是哪个进程导致CPU飙高了(也许是误报呢?)。可以看到图中PID是2816的进程,CPU使用率非常高。使用top -Hp 2816来对进程下的线程进行观察。图中可以发现,2825这个线程CPU非常原创 2022-01-23 15:22:09 · 283 阅读 · 0 评论 -
Go 分布式令牌桶限流 + 兜底策略
上篇文章提到固定时间窗口限流无法处理突然请求洪峰情况,本文讲述的令牌桶线路算法则可以比较好的处理此场景。工作原理单位时间按照一定速率匀速的生产 token 放入桶内,直到达到桶容量上限。 处理请求,每次尝试获取一个或多个令牌,如果拿到则处理请求,失败则拒绝请求。优缺点优点可以有效处理瞬间的突发流量,桶内存量 token 即可作为流量缓冲区平滑处理突发流量。缺点实现较为复杂。代码实现core/limit/tokenlimit.go分布...原创 2022-01-12 14:28:15 · 4444 阅读 · 0 评论 -
聊聊索引失效的10种场景,太坑了
前言今天咱们更进一步聊聊索引的相关问题,因为索引是大家都比较关心的公共话题,确实有很多坑。不知道你在实际工作中,有没有遇到过下面的这两种情况:明明在某个字段上加了索引,但实际上并没有生效。 索引有时候生效了,有时候没有生效。今天就跟大家一起聊聊,mysql数据库索引失效的10种场景,给曾经踩过坑,或者即将要踩坑的朋友们一个参考。1. 准备工作所谓空口无凭,如果我直接把索引失效的这些场景丢出来,可能没有任何说服力。所以,我决定建表和造数据,给大家一步步演示效果,尽量做到有理有据原创 2022-01-10 16:03:45 · 125 阅读 · 0 评论 -
替代 Postman + Swagger ~Apifox 才是 YYDS
作为一个后端开发者,我做的大部分项目一般都是基于 Swagger 来管理 API 文档,基于 Postman 来做接口调试,基于 JMeter 来做接口性能测试,基于 RAP 等工具 Mock API 数据。我经常在想:“要不要这么麻烦?有没有一款工具能够直接提供这些功能?经常在不同的工具之间切换来切换去真的很烦呢!”。我在网上找了很久,终于让我找到了一款游戏 API 文档、API 调试、API Mock、API 自动化测试一体化协作平台 —Apifox。Apifox 介绍官方对 Apif.原创 2022-01-10 15:48:29 · 3108 阅读 · 1 评论 -
Protobuf 为啥比 JSON、XML 牛?
今天,我带大家更深层次的认识认识 Protobuf,如果你对 Protobuf 的用法还不熟悉,直接前往:developers.google.com/protocol-bu…。当对 Protobuf 有了基本的认识后,就会明白了 Protobuf 序列化的数据会比 JSON、XML 传输效率更高。那为啥会高呢?本篇就带着这个问题一探究竟。看表面对于 JSON、XML,为了便于数据传输时的可阅读性,会保留数据的结构化信息,举个 JSON 例子,如下:{ "name": "laomi原创 2022-01-08 19:32:00 · 131 阅读 · 0 评论 -
偷天换日,用 JavaAgent 欺骗你的 JVM
熟悉Spring的小伙伴们应该都对aop比较了解,面向切面编程允许我们在目标方法的前后织入想要执行的逻辑,而今天要给大家介绍的Java Agent技术,在思想上与aop比较类似,翻译过来可以被称为Java代理、Java探针技术。Java Agent出现在JDK1.5版本以后,它允许程序员利用agent技术构建一个独立于应用程序的代理程序,用途也非常广泛,可以协助监测、运行、甚至替换其他JVM上的程序,先从下面这张图直观的看一下它都被应用在哪些场景:看到这里你是不是也很好奇,究竟是什么神仙..原创 2022-01-08 16:38:00 · 279 阅读 · 0 评论 -
String 既然能做性能调优,我直呼内行
码哥,String 还能优化啥?你是不是框我?莫慌,今天给大家见识一下不一样的 String,从根上拿捏直达 G 点。并且码哥分享一个例子:通过性能调优我们能实现百兆内存轻松存储几十 G 数据。String对象是我们每天都「摸」的对象类型,但是她的性能问题我们却总是忽略。爱她,不能只会简单一起玩耍,要深入了解String的内心深处,做一个「心有猛虎,细嗅蔷薇」的暖男。通过以下几点分析,我们一步步揭开她的衣裳,直达内心深处,提升一个 Level,让String直接起飞:字...原创 2022-01-07 21:13:49 · 111 阅读 · 0 评论 -
白话linux操作系统原理
虽然计算机相关专业,操作系统和计算机组成原理是必修课。但是大学时和真正从事相关专业工作之后,对于知识的认知自然会发生变化。还很有可能,一辈子呆在学校的老师们只是照本宣科,自己的理解也不深。所以今天我站在真正排查解决问题时的需要层面,用白话说一说linux操作系统的那些知识。本文整体采用的是类似递归调用的递进式结构。linux内核的本质简单来说如上图所示,咱们平时的应用程序或者linux命令要和操作系统打交道,都要经过一个叫做linux内核的软件。所有的硬件操作都需要通过他。就像古代女子出原创 2022-01-04 16:06:30 · 125 阅读 · 0 评论 -
Protobuf 为啥比 JSON、XML 牛?
今天,我带大家更深层次的认识认识 Protobuf,如果你对 Protobuf 的用法还不熟悉,直接前往:developers.google.com/protocol-bu…。当对 Protobuf 有了基本的认识后,就会明白了 Protobuf 序列化的数据会比 JSON、XML 传输效率更高。那为啥会高呢?本篇就带着这个问题一探究竟。看表面对于 JSON、XML,为了便于数据传输时的可阅读性,会保留数据的结构化信息,举个 JSON 例子,如下:{ "name": "laomi原创 2022-01-04 15:51:35 · 206 阅读 · 0 评论 -
Redis基础数据类型
Redis基础数据类型redis有5中基础数据类型结构,分别为 string(字符串)、list(列表)、hash(字典)、set(集合)、zset(有序集合).redis所有的数据结构都用一个唯一的key字符串作为名称,然后通过这唯一的key获取相应的value数据,不同类型的数据结构在于value的结构不同,也就是说不管是什么数据类型,他们的key都是字符串,代表能找到相应数据的标识。string(字符串)字符串结构用于存储一些固定的信息,例如用户信息,在系统中将用户信息序列化成一个js原创 2021-12-03 17:16:11 · 98 阅读 · 0 评论