Jin_Kwok
QS TOP100 硕士研究生学历,CSDN博客专家,曾在阿里、微软等公司重要项目中担任技术负责人或核心研发成员。
展开
-
主题 01:如何设计一个好的 API
1. 引言如果说好的 UI 设计可以让用户更容易地使用一款产品,那么,好的 API 设计则可以让其他开发者更高效地使用一个系统的能力。良好的 API 可以很大程度上减轻使用者的负担,同时也可以极大地减轻技术支持的工作量,尤其是对那些使用者众多的 API 来说。在实践中,一个较复杂的系统通常由多位开发者共同开发。往往由于缺乏统一的规范,开发者各自为政,导致同一个系统提供的 API 风格相差甚远,...原创 2020-10-28 16:10:06 · 371 阅读 · 0 评论 -
主题 02:如何设计系统预案(Preplan)?
1. 引言所谓预案,是指根据评估分析或经验,对潜在的或可能发生的突发事件的类别和影响程度而事先制定的应急处置方案。预案并不是个新鲜词,《尚书·说命中》:“惟事事,乃其有备,有备无患。”其大意为:事先有防备便可以避免灾祸,强调了做预案的重要性。在互联网领域,从系统设计、编码实现到后期维护,预案几乎贯穿全程。以下场景读者应该不陌生:淘宝首页“千人千面”推荐服务,读者应该都体验过。在接入推荐系统...原创 2020-10-28 16:10:07 · 838 阅读 · 0 评论 -
主题 03:如何设计模型
1. 引言模型是一种将事物形象化的有效手段,利用模型可将现实世界中的事物及事物之间的关系准确地表达出来。模型设计本质上就是系统地实施抽象的过程。很多时候,工程师面对的需求都是以具象的现实世界事物概念来描述的,遵循的是人类世界的语境。为了将需求落地,工程师需要开展一系列的工作,其中,模型设计尤为重要,可划分为以下几个步骤:第一步:需求调研,确定用户需要哪些信息,建立哪些应用,常用的操作及对象...原创 2020-10-28 16:10:08 · 1259 阅读 · 0 评论 -
主题 05:如何评估软件系统的吞吐量
1. 引言在实践中经常会遇到需要进行系统性能优化的场景,通常系统性能优化的主要目标是提高系统的吞吐量,那么,系统的吞吐量与哪些因素有关呢?如何评估?是否有方法论可循?作为一名进阶路上的工程师,这三个问题你可曾思考过、总结过?如果在面试中遇到这样的提问,你是否能从容应对?2. 单线程 RTRT(Response Time)即响应时间,是评估软件系统性能的重要指标之一。RT 可以简单地理解为系统...原创 2020-10-28 16:10:08 · 1104 阅读 · 0 评论 -
主题 06:如何高效地排查 Java 系统异常
1. 引言作为软件工程师,对于衡量系统性能的常用指标:CPU 使用率、系统负载(Load)、响应时间(RT)、每秒查询率(QPS)、并发数等,应该不陌生。通过这些指标可以量化地评价系统的状态,当系统在运行中出现问题时,这些表征系统性能的指标通常也会出现异常,从而有助于定位问题。更重要的是,大多数情况下,在系统问题爆发之前,某些指标就会显示异常,从而起到预警作用,为排查、解决问题争取时间。理解系统...原创 2020-10-28 16:10:09 · 365 阅读 · 0 评论 -
主题 07:如何进行 Java 系统性能优化(上)
1. 引言系统性能优化涉及面非常广,涵盖方案优化、编码优化、并发优化、JVM 调优等诸多方面的知识。虽然不同系统的优化策略存在差异,但从全局来看,它们的共性仍是主要的。首先,我们可以从方案设计、编码、并发设计、JVM 等方面去优化我们的系统;然后,可以通过一些 Linux 系统命令和工具去发现系统的性能瓶颈;最后,结合业务特点采用缓存、异步化、并发等方式对系统进行“定制”优化。本文为 “Ja...原创 2020-10-28 16:10:09 · 315 阅读 · 0 评论 -
主题 07:如何进行 Java 系统性能优化(下)
1. 引言系统性能优化涉及面非常广,涵盖方案优化、编码优化、并发优化、JVM 调优等诸多方面的知识。虽然不同系统的优化策略存在差异,但从全局来看,它们的共性仍是主要的。首先,我们可以从方案设计、编码、并发设计、JVM 等方面去优化我们的系统;然后,可以通过一些 Linux 系统命令和工具去发现系统的性能瓶颈;最后,结合业务特点采用缓存、异步化、并发等方式对系统进行“定制”优化。本文为“Jav...原创 2020-10-28 16:10:10 · 216 阅读 · 0 评论 -
主题 08:如何熟悉一个完全陌生的系统
1. 引言作为工程师,在职业生涯中不可避免的会遇到以下场景:入职新公司或者转岗到新部门,如何有条不紊地熟悉已有系统?支援陌生系统的迭代开发或者维护,如何快速上手?所在团队同事离职或转岗,需要你接手相关系统,如何尽快进入角色?面对上述场景,梳理一套方法论,从而有序、高效地应对十分必要。笔者结合自身经验和与优秀同事交流的结果,将熟悉一个陌生系统的方法总结为三部分:业务学习、技术学习、实践...原创 2020-10-28 16:10:11 · 478 阅读 · 0 评论 -
主题 04:如何设计一个复杂的系统(上)
1. 引言系统设计又称系统架构,软件领域负责系统设计的工程师通常被称为架构师。在阿里,架构师多以角色存在于具体的项目中,而非专门设置的职位,对于复杂的系统,通常由 P8 或 P9 级别的资深工程师负责设计。在实践中,根据复杂度的不同,有些小系统只需画个流程图即可梳理清楚;但是,复杂系统的设计则困难得多,以 12306 为例,2020 年春运期间高峰日点击量达 1495 亿/天,170 万/秒,...原创 2020-10-28 16:10:11 · 760 阅读 · 0 评论 -
主题 04:如何设计一个复杂的系统(下)
1. 引言设计复杂系统的能力是高阶工程师的必备能力,设计出完备、健壮、优雅、前瞻的系统是工程师的不懈追求。在上一篇文章中,笔者介绍了设计一个复杂系统的第一步:深入理解业务。本文作为《如何设计一个复杂的系统》主题的延续,将从技术的角度出发带领读者掌握系统设计的思考框架和方法论(通俗地说,就是系统设计的套路)。2. 系统设计简述回顾自己在过往职业生涯所经历的项目,在做系统设计的时候都会按照一个套...原创 2020-10-28 16:10:12 · 441 阅读 · 0 评论 -
主题 09:如何画好系统设计图
1. 引言系统架构图是为了具象地呈现软件系统的整体轮廓、各个组件之间的相互关系和约束边界,以及物理部署和演进方向的整体视图。软件架构图是一种非常好的表达方式,一图胜千言,在项目评审、内部交流、方案归档以及晋升答辩中,好的系统架构图大有裨益。系统架构图虽好,但也不可滥用。在互联网领域,对于一个较为复杂的软件系统,由于业务迭代频繁,通过创建和维护系统设计图来提供准确且有价值的内容并非易事。很多时候...原创 2020-10-28 16:10:12 · 1841 阅读 · 0 评论 -
主题 10:如何将工作中的创新点转化为专利
1. 引言很多工程师有技术情怀,在工作中也很注重用新方法、新思路解决问题,但却很少将工作中的创新转化为专利,无形中错失了进一步创造价值的机会。专利的价值是多方面的,专利储备数量在一定程度上可以反映企业的技术实力;通过专利授权、转让可以带来可观的经济效益;专利还是企业的护城河;对于个人而言,成功申请专利可以体现自身的创新能力,同时可以获得奖励。本主题将详解从工作中挖掘专利的方法以及申请专利的相关...原创 2020-10-28 16:10:12 · 3250 阅读 · 0 评论 -
主题 11:如何打造能力护城河
1. 引言 经历的风浪多了,目所及,风轻云淡;踩过的坑多了,行所至,皆为平地——SL Ying神州大地的互联网行业,加班对工程师来说已是家常便饭,同时互联网领域技术又日新月异,很多工程师都疲于应付,以至于长期以来流传一个很广的误解:35 岁是码农的终点。如何在繁忙的工作中做好积累,构建个人核心竞争力,相信是很多工程师同行都在思考的问题。在互联网领域,中年危机是绕不开的话题,为何会有中年...原创 2020-10-28 16:10:13 · 573 阅读 · 0 评论 -
主题 12:实践案例集锦之接口设计
1. 引言API 是模块或者子系统之间交互的桥梁,好的系统架构离不开好的 API 设计。在《主题 1:如何设计一个好的 API》一文中,笔者解读了什么样的 API 设计是好的设计,本文作为 API 设计话题的延续,将介绍如何在设计中实践之前介绍的设计方法论。 成功的系统不是有一些特别闪光的地方,而是设计时点点滴滴的努力积累起来的。API 设计面临的挑战千差万别,没有一种普适性的原则可以...原创 2020-10-28 16:10:13 · 596 阅读 · 0 评论 -
主题 12:实践案例集锦之模型抽象
1. 引言模型是一种将事物形象化的有效手段,利用模型可将现实世界中的事物及事物之间的关系准确地表达出来。模型设计本质上就是系统地实施抽象的过程。很多时候,工程师面对的需求都是以具象的现实世界事物概念来描述的,遵循的是人类世界的语境。为了将需求落地,工程师需要开展一系列的工作,其中模型设计尤为重要。模型设计的过程是一个从整体到局部、从高层模型设计到细节逐步细化的过程。在《主题 03:如何设计模型...原创 2020-10-28 16:10:14 · 921 阅读 · 0 评论 -
主题 12:实践案例集锦之兜底方案设计
1. 引言 惟事事,乃其有备,有备无患——《尚书·说命中》在《主题 02:如何设计系统预案?》一文中,笔者以三个 W(什么是预案?为什么要做预案?如何设计预案?)为主线展开,介绍了系统预案相关的内容。预案的本质是为系统稳定性服务的。换句话说,设计预案的前提一定是系统的稳定性存在风险,且一旦风险发生,所导致的结果将难以接受。在实践中,很多工程师倾向于系统的功能性建设,而忽视那些影响系统稳...原创 2020-10-28 16:10:15 · 636 阅读 · 0 评论 -
主题 12:实践案例集锦之设计理念
1. 引言 古语云:道为术之灵,术为道之体;以道统术,以术得道。其中:“道”指“规律、道理、理论”,“术”指“方法、技巧、技术”。意思是:“道”是“术”的灵魂,“术”是“道”的肉体;可以用“道”来统管“术”,也可以从“术”中获得“道”。工匠追求“术”到极致,其实就是在寻“道”,且离悟“道”也就不远了,亦或是已经得道,这就是“工匠精神”——一种追求“以术得道”的精神。如果一个工匠只满足于“...原创 2020-10-28 16:10:15 · 573 阅读 · 0 评论