四猿外

其他

大厂的11个秘技,搞定接口性能

前言接口性能优化对于从事后端开发的同学来说,肯定再熟悉不过了,因为它是一个跟开发语言无关的公共问题。该问题说简单也简单,说复杂也复杂。有时候,只需加个索引就能解决问题。有时候,需要做代码重构。有时候,需要增加缓存。有时候,需要引入一些中间件,比如mq。有时候,需要需要分库分表。有时候,需要拆分服务。等等。。。导致接口性能问题的原因千奇百怪,不同的项目不同的接口,原因可能也不一样。本文我总结了一些行之有效的,优化接口性能的办法,给有需要的朋友一个参考。1.索引接口性能优化大家第一个想到的可能是:优化索引。没错,优化索引的成本是最小的。你通过查看线上日志或者监控报告,查到某个接口用到的某条sql语句耗时比较长。这时你可能会有下面这些疑问:该sql语句加索引了没?加的索引生效了没?mysql选错索引了没?1.1
2021年11月25日
其他

这 10 个程序员的好习惯,让我变强了

命令去直接对日志做个过滤加排序,还是通过日志搜集加日志搜索等工具,都能很容易的发现到问题。甚至还可以和监控系统联合起来,直接做预警。所以,打日志的时候,我们要记得把输入和输出以及时间都打印出来。4.
2021年11月23日
其他

程序员们自己打起来了

岁失业之后肯定能找到工作吗?所以,如果程序员我们自己都不理解,都没有点同理心,那高兴的就是老板们了:别慌!招聘要求稳住,程序员他们自己已经打起来了。哎,算了,不说这些了,还是说点有用的吧。45
2021年11月18日
其他

面向对象编程之丑?

“我是旧时代的残党,新时代没有承载我的船。”如果面向对象编程是一个人,我猜他自己在不断被非议的今天,一定会这样感慨。说实话,我用面向对象方式编程已经十几年了,我做架构设计离不开它,做系统分析离不开它,编码的时候更是严重依赖它,我对面向对象无论是思想上还是写代码上都对它是有很深的感情。刚学
2021年11月12日
其他

做程序员,我最自豪的一件事情

前几天在知乎看到一个问题:最让程序员自豪的事情是什么?我好好回忆了一下自己的过去,然后花了一个小时答了一下,答完之后我还挺激动。今天把回答扩充了一下发给大家看看。12
2021年11月4日
其他

Y君:天天增删改查,又能怎么样?

老朋友Y君发微信给我约饭,算下来,和Y君也有一年未见了。Y君此人曾一度在小公司惶惶不可终日——工作简单,却不知前路。后来Y君找到办法走出了困境,再后来他进入了阿里,并一路做到了高P。他曾和我总结了他的心路历程,也分享了他的方法论。恰好最近总有些朋友苦恼于自己每天仅做些简单的增删改查工作,却不知道该如何继续进步,便想在此和大家分享下Y君成长的故事。成长只能靠自己Y君的第一份工作很不好,就是在一家外包的小公司做项目。做项目也不是像普通程序员那样正常的写代码,而是更简单——用公司的一套低代码开发平台去做。这套低代码开发平台Y君给我看过,就是有个网址,打开后有一堆功能菜单。然后,开发人员就可以用这些功能菜单,建立项目需要的数据实体,类似下图:点点新建,就创建个
2021年10月28日
其他

项目都做不好,还过啥程序员节?

趁着程序员节发一篇旧文,这是一年多之前的一篇文章,写的还是很不错的,是我第一篇1万多阅读的原创。这次重发的原因:1、估计很多新读者没看过,推荐给大家;2、看过的读者也可以再看一遍,可能会有新的收获。如果不想看,也没关系,可以划到文章底部看看……话不多说,正文开始:编写高质量可维护的代码既是程序员的基本修养,也是能决定项目成败的关键因素,本文试图总结出问题项目普遍存在的共性问题并给出相应的解决方案。1.
2021年10月23日
其他

那些消失的代码注释

今天和大家聊聊代码注释:为什么很多人不喜欢写注释?要不要写注释?该怎么写注释?现在的项目开发里,代码注释就像程序员的头发,越来越少。尤其是国内,这种现象不仅是在小公司小团队中司空见惯,就算在大公司,以及大团队中的开源项目里,也是屡见不鲜。上图是我在阿里的
2021年10月20日
其他

我面试新人,都会问什么?

IO》没有,如果英文不好的同学,可以看个千锋教育的视频:Java入门基础教程视频—(IO框架),地址如下:https://www.bilibili.com/video/BV1Tz4y1X7H71.5
2021年10月12日
其他

推荐几个开源类库,超好用,远离996!

Wiremock,挡板这种东西就再也不存在了,直接在单元测试里模拟测试即可,像这样:WireMock.stubFor(get(urlPathMatching("/aliyun/.*"))
2021年9月28日
其他

接下来或许是一年中跳槽的最佳时间

一般来说,很多人都认为一年中最佳的跳槽时间是三、四月份,也就是我们常说的“金三银四”。但我认为“金三银四”不一定是性价比最佳的时间。为什么这么说?听我从团队管理者、面试官的角度给大家解释一下。三、四月份是跳槽的旺季,背后主要的原因就是年终奖。就拿我管理的技术团队来说吧,我们团队有
2021年9月24日
其他

看书还是看视频好?群里炸了

讲解内部原理的好视频少深入讲解内部原理的视频不是没有,但是要找到一个合适的,讲解深入浅出的视频非常难。大多数的视频,讲的很晦涩,甚至是直接照本宣科,你听他的内容,可能就是他找了本书照着念。问题2.
2021年9月16日
其他

B 站,我迟到了

站学编程,于是我也试着看了看,好家伙,编程视频还真不少。之前写了几篇文章,推荐了学编程的一些书籍和读书方法。然后就有读者问,有没有推荐的视频。于是我就与时俱进了一把,花了周末一天的时间,整理了一些
2021年9月13日
自由知乎 自由微博
其他

架构师之路,我看过的三本书,高分!

之前我写过几篇架构师、架构设计相关的文章。说实话,想通过几篇文章就把架构师的方方面面说明白,挺难的。这可能需要一系列的文章,今天就给大家安排了这篇文章。很多程序员都有和下面类似的困惑:为什么很多程序员成不了架构师?高级程序员和架构师之间有什么区别?我认为,架构师和高级程序员最主要的区别在于,两者之间的思想维度上。我举个例子,假如现在有个需求:公司想要做一套直播卖货的系统。产品需求给出来了,在我成为架构师之前,作为程序员的我会怎么想?我的想法可能是最简单直接的:需求中的礼物打赏如何实现是不是得有房间房间的逻辑是如何实现的滚屏弹幕该怎么落地……也就是说,作为程序员,我的第一反应是:业务如何转化为技术,各种业务功能是如何用技术实现的。那么,在我做过架构师之后,我会怎么想呢?如果是我牵头负责这个,除了这些业务转成技术的问题,我还需要思考如下问题:架构用单体还是微服务通信方式都有哪些中间件选哪些比较好普通存储和多媒体存储该如何规划应该选什么样的架构风格可靠性,弹性,可用性该怎么保障开发成本、部署成本、维护成本成本与系统性能的折中……以上,只是架构师典型思考的几个宏观问题。其实,在一套系统中,架构师不仅仅只是思考这些宏观问题而已。更会深入细节,去解决各种层次的技术难题。回到直播问题上,架构师还必须去解决一系列技术难题,比如:直播的卡顿问题通信协议的优化问题各种中间件的优化问题存储的一致性问题总的来说,一名程序员,他的思维往往是自下而上的,就是先思考功能实现,再根据功能实现去理解整个系统的运行机制。而一名架构师,他的思维往往是自上而下、自下而上相结合的。他本能的就会先去想系统的架构,根据系统的架构,再去根据架构的雏形,去根据各个业务定出业务模块之间的通信方法,再根据通信方法去理解各个业务模块的耦合,去想着一些代码实现难题,最后去完整的理顺整个系统的技术实现。所以,一名程序员想要成长为一名合格的架构师,必须经过思维的转变。而这种转变,需要多读一些好书,让这些书中的知识,来对个人的思维进行一次大清洗,从而使得这种转变更加容易和更加准确。我在这里想推荐
2021年9月7日
其他

Java学习之路上的“路障”太坑了

Service。它可以认证系统的使用者,说白了就是登录成功的规则。比如,用户登录可以使用密码,也可以无密码,只去验证用户存在的密钥。但现实情况是,这些东西其实基本上很少有人用了,现实里大家基本都在用
2021年9月3日
其他

我这有本秘籍:我是如何短时间学好微服务的

前天发的,忘了标原创,看过的忽略……最近脑子有点……我之前写过几篇关于微服务的文章,读者们看完反馈不错。微服务的架构模式(上)微服务的架构模式(中)微服务的架构模式(下)恕我直言,微服务挺好,但不适合你同时,也有读者说:看完文章是懂了,但是自己学的时候,还是有点懵,不知道怎么下手授人以鱼不如授人以渔。鱼能解决一时之饥,却不能解决长久之饥。我知道,你们需要知识,同时更需要学习知识的方法。所以,这篇文章就说说渔,正文开始。程序员的某些技术也会过时,就像冰箱里的食物,长期不拿出来吃掉,就会过期和腐败。所以,程序员这个行业,需要不断的学习。我现在已经从程序员转成技术管理了,管理
2021年9月3日
其他

Java学习之路上的“路障”太坑了

Service。它可以认证系统的使用者,说白了就是登录成功的规则。比如,用户登录可以使用密码,也可以无密码,只去验证用户存在的密钥。但现实情况是,这些东西其实基本上很少有人用了,现实里大家基本都在用
2021年8月25日
其他

大刘终于当上了架构师

综合在一起使用,于是问题就来了。缓存数据和数据库中的数据出现了各种脱节:查询数据的时候,本来可以走缓存的时候没有走;更新数据的时候,又经常忘记同步缓存状态。说出来都不怕丢人,缓存命中率可能都不到
2021年8月18日
其他

当年,我从小公司翻身进大公司之后……

经常有很多读者问我大公司和小公司的程序员差别在哪?程序员能去小公司吗?大公司、小公司我都待过,今天就和大家说说我的经历,先从小公司说起。之前文章说过,我的第一份工作是在一家北京的小公司做程序员,全公司一共
2021年8月11日
其他

高效学习,我的最佳实践

PooledConnection、Connection、Statement、ResultSet接口,获得了可以在这些接口的关键方法中植入统计的能力。统计的数据会定期采样后存储在某些命名叫做
2021年8月3日
其他

小 W 离职了

有一次,小W写公众平台的一个对外接口,写完了拿出去测试,结果闹了个大笑话。他写的对外接口,连个验证签名也没有。这事儿幸亏在内部测试的时候,被查了出来。不然直接放出去,整个团队的专业性都要受到质疑。
2021年7月20日
其他

JVM 君,你过分了

怎么引起的呢?这个问题如果去排查代码,那真的是难如登天,首先,没有任何堆栈错误去帮助定位问题。其次,项目代码量大了去了,而且是年头久远。
2021年7月9日
其他

没有大厂的命,得了大厂的病

再说了,这些进不去大厂的程序员里,不乏优秀之人,仔细选肯定能选到的。淘到宝的前提是,我们在看人的时候,别因为别人的学历不行,学校不行,没在大厂干过,就给人家贴上一个“不行”的标签。
2021年7月1日
其他

我招了个“水货”程序员

他想跳槽,但是发现很多高级岗位都是要求高并发经验的,他对此很着急。如果他继续在以前的公司发展,就势必接触不了什么高并发。但是跳槽的话,他又必须有高并发经验才能找到一个不错的岗位去继续提升自己。
2021年6月25日
其他

代码飞舞之处,offer亦生生不息

有些时候,我们用的一些开源组件,出现了一些预想不到的问题。而这时候,也没有前人经验可借鉴,也没有文档可供参考,只能靠自己修复。阅读代码,理解项目,才能顺利修复问题。如果阅读代码水平不够,修复
2021年6月17日
其他

脑子,yyds

同时,也要看到,思维方式的改变其实是一个非常漫长的过程,它不是一场外科手术能立刻有效果。但是,请相信,思维方式是我们头顶上的一盏明灯,它照亮的是我们的人生路,你看的有多远,你的路就有多长。
2021年6月9日
其他

读写分离水太深,你把握不住,让叔来——命令查询权责分离模式

而对于这种情况,我无论如何优化总是得不到满意的结果。如果我缓存这个排行呢,由于这个排行需要各种统计加排序,所以从数据库中查询出来后,还需要各种模型转换,如果并发量上来,查询再转换,性能真的掉的飞快。
2021年6月2日
其他

拯救祭天的程序员——事件溯源模式

我们来分析一下:用户升级的真正目的是什么?从业务角度来说,其实就是通过提供各种福利去提升用户的活跃度。那么,这件事需要实时吗?似乎不必须,因为用户几乎不太可能升级后马上去使用对应的福利。
2021年5月26日
其他

向老李学习,还得带着团队做出成绩

不论是在新一团还是独立团,刚开始都是一穷二白,要啥没啥。老李靠自己,自己动手丰衣足食,武器弹药、粮食装备都是自己想办法搞。最神奇的是,他还弄了个骑兵连。
2021年5月20日
其他

硬着头皮写,硬着头皮搞:一个服务一个数据库模式(下)

数据库管理过于复杂——这个是很显然的问题,管理几个数据库和管理几十个数据库,需要投入的人力物力是完全不一样的。每一台数据库本身就是个很复杂的系统,数量越多,出问题的几率也越大,监控难度也越大。
2021年5月11日
其他

我是如何把微服务的这个模式落地的:一个服务一个数据库模式(中)

对于第一类独立的业务需求,我直接就设计出一套独立服务,让它和已有的老系统通过网络远程互联。这样的话,新搭建的服务很小,维护也简单。以前的老系统也成为新服务的服务。这样,一部分需求,就可以快速迭代了。
2021年4月26日
其他

我,管理100多人团队的二三事

我管理团队的方式,主要自己一点点总结出来的,可以说是野路子吧。虽然以前看过书,也参加过培训,但是我觉得生搬硬套没啥意义。今天也不想和大家讲那些关于管理的大道理,就是列举一些小事,想到哪写到哪。
2021年4月23日
其他

“一学就会”微服务的架构模式:一个服务一个数据库模式(上)

同样的,在同样的支付模块中(根据系统模块划分而定),可能同时存在本地账户转账和三方渠道支付,本地账户转账可能需要即时,要求极高的响应时间。但是对于第三方支付,则可以有一定的响应时间容忍度。
2021年4月13日
其他

编码编成翔的十八般兵器

有些程序大师,他需求可能比较多,性格比较贪婪。写的方法也跟性格一样邪恶,一个方法需要的参数,从天上到地下,什么都需要。你要调他的方法,就跟有个黑洞吸住你不放一样,陷进去你就出不来了。放我去飞好不好?
2021年4月1日
其他

我,第一次做项目经理,干赔了

国开行里领导太多,随随便便遇到个人就得称呼“张处”、“李处”、“赵局”。我也奇了怪了,总行里的领导这么多吗?本来乙方在甲方面前地位就有的低,再让我巴结这些个处长们……程序员的清高让我干不出来这个。
2021年3月16日
其他

大刘跌倒,老田吃饱——首席架构师之争

大刘沉醉于黑甜乡,也不想返回。没有急吼吼的业务人员的催促,没有怒冲冲的产品经理的呵斥,更没有领导阴沉沉的面容。一切影响睡眠的因素都仿佛去了另一个世界。像极了童年的每一次酣睡,一切都是甜的。
2021年3月10日
其他

你们要的学Java的练手项目,来了

系统功能:用户管理、角色管理、菜单管理、部门管理、岗位管理、SQL监控、定时任务、邮件工具、七牛云存储、支付宝支付、服务监控、运维管理等
2021年3月8日
其他

在主动要求涨工资这事上,不要学我!

当时的我,对期权没啥概念,对老板涨工资挽留我很感动。但是吧,我想着离职已经提了,都说出口了,就不想再反悔了。如果老板给涨了工资,我就不走了,老板以后对我会不会有什么看法?会不会觉得我很财迷?
2021年2月25日
其他

做一个很出色的程序员

饭桌上,大刘和小马谈了许久,也谈到了一些他们那些曾经的同事。其中,有些同事特别优秀,他们和小马一样,年纪轻轻已经成为了极其出色的程序员,在行业中,也获得了很多的物质报酬和名誉。
2021年2月19日
其他

几年前,我撸了一套RabbitMQ的客户端

传送消息,并能通过临时队列等技巧去实时返回处理结果。这时候,就没办法一次抓多条数据进行处理了,因为,有发送端在等处理结果,依次处理,再依次返回,黄花菜都凉了。
2021年2月7日
其他

别人家的团队怎么用RabbitMQ:我总结的5点规范

比如网络连接的处理,比如异常的处理,比如消息失败的处理等等等。这些,如果手头没有一套成熟的框架,那么很可能由于一些细节处理不到位,导致非常多的问题,这都是不必要的成本。
2021年1月19日
其他

最终一致性,一致只会迟到,但绝不会缺席

在我们做支付时,需要记账,当记账不成功时,我们可能希望能尽可能的重试。当重试达到某种限制后,甚至我们还要通知上游系统去提供一个重试和取消接口,让下游能通知上游重发消息,或者先暂时取消操作。
2021年1月13日
其他

当年,我的架构师之路差点完蛋,幸亏了它

当时,从业务上,要求广告的访问数据都要保证及时入库不能丢,因为丢了就可能造成计费的损失,而这些损失全是钱。所以,每当用户点击广告或者广告展示出来的时候,为了保证不丢失,这些数据都是实时入库的。
2020年12月31日
其他

肝了3版才满意:分布式系统之CAP理论,我们对它的理解和误解

答案是:仅且仅当包含数据的服务,收到数据更新请求的时候,数据才会发生变化。而数据更新请求则仅包括数据的增、删、改这三种请求,而这三种请求又被统称为写请求。所以,数据只有在写请求的时候才会发生变化。
2020年12月22日
其他

架构师的成长之路,第一步该怎么迈?我给大家准备好了

为什么缺点最重要呢?因为架构师在架构的时候,一项尤为重要的工作就是做技术选型。而技术选型的目标很多时候的应用场景往往非常模糊,如果能了解到各选型的缺点,则对选型的结果是否准确就起到了极其重要的作用。
2020年12月9日
其他

优秀!一鼓作气学会“一致性哈希”,就靠这 18 张图了

如果我们再大胆一点,偷偷的把我们的假设进一步优化,把一些本来需要判断为不存在的队列去映射到真正已经存在的队列上,那么我们是不是就等于把这些真正存在的队列均匀分布到这个圆环上了?
2020年11月17日
其他

一个技术总监的忠告:精通那么多技术,你为何还是受不到重用?

修改代码是个很危险的事情,因为我们修改的代码往往会和别的功能耦合住。改了一点代码,结果影响一大片功能的情况经常出现。最虐心的是,这种连带影响可能不会马上出现,不知道哪天就突然冒出来折腾一把。
2020年10月26日
其他

百万年薪技术大佬的读书之旅

的学习不用说,只能是唯一的经典书籍《TCP/IP详解(套装共3册)》要注意的是,这是一套书,其中卷一是最经典的,需要反复看。对于几个基础的协议一定要非常清晰,比如
2020年10月21日
其他

架构师说了:不想做背锅侠?生产问题要这样查

三板斧的诊断方式,说不定会帮你快速定位、解决线上问题,毕竟快速的解决生产问题会把损失降到最低。最后,想对大家说一句:作为程序猿,一定要有程序猿的态度。避免背锅,拒绝甩锅,打破砂锅,从你我做起。
2020年10月19日
其他

恕我直言,微服务挺好,但不适合你

在这个现实的世界里,并不是一切围绕着技术打转的。固然,技术欠债会让我们这些技术从业者感到分外的困扰和难受。可是,假如我们超前超度的使用了我们可能并不需要的超前概念和超前架构,同样会使我们感到痛苦。
2020年10月10日