Yezhiwei Blog

平时多流汗,战时少流血!

彻底明白如何设计一个良好的 API

背景 现在软件开发流程都是协同合作的,前后端分离,那么我们如何实现对 API 的统一认知?又该如何设计一个良好的 API 接口?随着业务的演进,如何设计一个有兼容性的API?面对多种客户端,如何设计一个处处适用的 API 呢? RESTful 是目前最流行的 API 设计规范,通过一定的规范可以解决上面这些问题,对于 RESTful 架构的理解可以参考阮一峰老师的这篇文章(http://ww...

使用 Spring 到底怎么实现策略模式

原文:https://segmentfault.com/a/1190000020836393 前言 我们都知道设计模式好,可以让我们的代码更具可读性,扩展性,易于维护,但大部分程序猿一开始都学过至少一遍设计模式吧,实战中不知用到了几成。接下来让我介绍一个结合 SpringBoot 的策略模式套路,让你的代码少些 if-else 开撸 废话不多说,直接告诉你今天的核心是 @Autowire...

关于需求评审和讲解的一些思考

背景 上图为[产品迭代开发协作流程],上次聊了一下关于 Code Review 的一些思考。 在上面的流程中,需求评审通过后,要产出最终的需求文档、原型等交付物,还要对本次需求封版;在测试阶段的补充需求的处理方式;上线后记录或反馈的问题列入下一版的迭代。 可是,流程中都是比较理想的状态,现实工作中并没有达到设想的目标。作为一个开发人员,分别站在产品经理的角度和开发人员的角度分析一下问题的可...

关于CodeReview的一些思考

背景 上图为[产品迭代开发协作流程],其中我们在 Demo 本次迭代之前会对开发人员的代码进行评审,所以今天就聊一下关于CodeReview的一些思考。 Code Review 的主要目标 Code Review,也就是我们常说的代码评审。Code Review 主要是在软件开发的过程中,对源代码进行评审,其目的是找出并修正软件开发过程中出现的错误,保证软件质量,同时也能提高开发者自身水...

RESTful API 最佳实践

源文:http://www.ruanyifeng.com/blog/2018/10/restful-api-best-practices.html 背景 RESTful 是目前最流行的 API 设计规范,用于 Web 数据接口的设计。 它的大原则容易把握,但是细节不容易做对。本文总结 RESTful 的设计细节,介绍如何设计出易于理解和使用的 API。 一、URL 设计 1.1 动词 ...

HTTP POST 四种常见的提交数据方式

背景 今天在与第三方联调接口的时候,发现一些问题:对 HTTP 协议的请求方法使用不合理(本来以为这些对工程师来说已经是常识了),协议规定的 HTTP 请求方法有 OPTIONS、GET、HEAD、POST、PUT、DELETE、TRACE、CONNECT 这几种。其中 POST 一般用来向服务端提交数据,也可用来与第三方交互数据。 用 Content-Type : applicatio...

JMeter进行WebSocket压力测试

背景 之前两篇内容介绍了一下 WebSocket 和 SocketIO 的基础内容。之后用 Netty-SocketIO 开发了一个简单的服务端,支持服务端主动向客户端发送消息,同时也支持客户端请求,服务端响应方式。本文主要想了解一下服务端的性能怎么样,选择使用 JMeter 对 WebSocket 应用进行性能测试。 JMeter 扩展实现 WebSocket 支持 JMeter 是目前最...

Socket.IO

Socket.IO 是一个为实时应用提供跨平台实时通信的库。目标是使实时应用在每个浏览器和移动设备上成为可能,模糊不同的传输机制之间的差异。它使用了浏览器支持并采用的 HTML5 WebSocket 标准。以下内容为翻译官网 https://socket.io/docs/ 。 聊天应用程序 demo 地址 https://socket.io/demos/chat/ What Socket.I...

WebSocket 主动推送

背景 最近,公司在开发一款主动服务机器人,将产生的消息数据通过服务端推送到客户端(H5、iOS、Android);同时支持用户进行提问,通过 NLP 识别用户意图,然后找到答案并回答用户。本次仅记录在进行部署主动服务通信服务时遇到的问题。 服务器向 Web 页面推送消息的方式 非阻塞轮询(短轮询):客户端以固定的频率(比如10秒钟一次)向服务端发送请求,如果服务端没有数据响应,就直接响应一...

如何优雅的使用缓存

背景 在之前的文章中《你应该知道的缓存进化史》介绍了爱奇艺的缓存架构和缓存的进化历史。俗话说得好,工欲善其事,必先利其器,有了好的工具肯定得知道如何用好这些工具,本篇将介绍如何利用好缓存。 1.确认是否需要缓存 在使用缓存之前,需要确认你的项目是否真的需要缓存。使用缓存会引入的一定的技术复杂度,后文也将会一一介绍这些复杂度。一般来说从两个方面来个是否需要使用缓存: CPU 占用:如果你有某...