当前位置: 首页 > news >正文

接口优化常用思路

空间换时间

计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招–以空间换时间
合理使用缓存就是一个很好的例子,针对一些频繁使用且不频繁变更的数据,可以提前缓存起来,需要时直接查缓存,避免频繁地查询数据库或者重复计算。这里的缓存形式多样,可以是R2M,也可以是本地缓存、memcached、Map、…
需要注意的事,这里用了合理二字,因为空间换时间也是一把双刃剑,需要综合考虑你的使用场景,毕竟缓存带来的数据一致性问题也挺令人头疼。

串行改并行

串行就是,当前执行逻辑必须等上一个执行逻辑结束之后才执行,并行就是两个执行逻辑同时进行,所以并行相对来说就比较节省时间,当然,这种方式的前提是多个步骤间没有相互依赖。实现方式方式如:多线程、协程、…

批处理

总所周知,I/O耗时是影响接口响应速度的重量级嘉宾。这时候批量思想就显得尤为重要。比如你需要查询10个用户的爱好,你应该是一次查询这些用户的所有爱好,再按照用户分类。任何在循环中执行的CRUD都值得高度警惕

异步

对于当前接口返回结果没有影响的逻辑块,我们可以考虑异步执行,这也是解耦思想的体现。如:MQ、协程、…
但并不是说异步越多越好,与之相伴的逻辑复杂度上升可能会导致排查问题难度增加,另外可能引起的数据时序混乱、数据延时,如何保证数据一致性等也是令人头疼的问题

预处理

就是把可能要用到的数据,提前计算/处理好结果并存储下来,要用时只需要直接查询即可,而不是要用时才去计算。这种思想生活中随处可见,比如夏天即将来临,工厂都会提前多生产一些短裙、短袖,而不是等用户下单后才开始生产
值得一提的是,预处理出来的数据可能存在时效性问题,所以这种方法更适用于那种变化不频繁、实时性要求不那么高的场景

池化思想

池化思想的本质是预分配。预先将资源和连接申请到手,使用时即拿即用,节约了资源创建/销毁占用的时间。比如常见的线程池、内存池、连接池、…

上下文传递

由于分支交叉和多人协作,不可避免的出现多次查询同一资源的问题。我们可以只查询一次,通过上下文的方式往下携带,避免多次查询的开销

最简思想

这常常是最容易让人忽略的细节。很多时候实际需要三五个字段,而接口编写者为了方便,直接一股脑儿返回几十上百个字段。增加I/O开销和带宽消耗
在编写接口的途中,我们应该时刻记得:非必要不查,非必要不返。

SQL治理

~待续

相关文章:

接口优化常用思路

空间换时间 计算机程序中最大的矛盾是空间和时间的矛盾,那么,从这个角度出发逆向思维来考虑程序的效率问题,我们就有了解决问题的第1招–以空间换时间 合理使用缓存就是一个很好的例子,针对一些频繁使用且不频繁变更的数据&#…...

【SpringCloud】SpringCloud面试题整理

文章目录1、什么是Spring Cloud?2、Spring Cloud和Dubbo的区别3、REST和RPC的区别4、SpringCloud如何实现服务的注册和发现5、什么是服务熔断和服务降级?6、项目中zuul常用的功能7、服务网关的作用8、ribbon和feign区别9、ribbon的负载均衡策略10、简述什…...

一些数据库知识点总结

DB2数据库&#xff1a;从数据库表中第I条记录开始检索J条记录SELECT * FROM (SELECT A.*, ROW_NUMBER() OVER() AS NFROM (SELECT * FROM table_name) AS A)WHERE N > I AND N < J;Oracle数据库&#xff1a;从数据库表中第M条记录开始检索N条记录SELECT * FROM (SELECT R…...

Python unittest 模块

一、Unittest 的几个基本概念 TestCase &#xff1a;要写的具体的测试用例TestSuite&#xff1a; 多个测试用例集合&#xff08;或测试套件/测试集&#xff09;TestLoader&#xff1a;用来加载 TestCase 到 TestSuite中的&#xff08;更通俗一点&#xff0c;就是用来把符合我们…...

Spring - Spring IoC 容器相关面试题总结

文章目录01. Spring IoC 和依赖注入是什么&#xff1f;02. Spring IoC 的优点和缺点分别是什么&#xff1f;03. Spring IoC 有什么作用和功能&#xff1f;04. Spring 依赖注入的方式&#xff1f;05. Spring 构造器注入和 setter 方法注入的区别&#xff1f;06. Spring 依赖注入…...

顺序表来喏!!!

前言&#xff1a;还记得前面的文章&#xff1a;《通讯录的实现》吗&#xff1f;通讯录的完成就借助了顺序表这种数据结构&#xff01;&#xff01;&#xff01;那么今天我们就来介绍我们的顺序表介绍顺序表前&#xff0c;我们来了解一下线性表的概念线性表&#xff1a;线性表&a…...

【H2实践】之 SpringBoot 与 H2 数据交互

一、目标 本文是【H2实践】之认识 H2&#xff0c;【H2实践】之 SpringBoot 整合的后续。前文分别介绍了 H2 及其简单使用&#xff0c;并完成了 H2 与 SpringBoot 的整合。本文将紧接 【H2实践】之 SpringBoot 整合 探索实用 SpringBoot 结合 JPA 通过 web 接口操作 H2 数据库的…...

LeetCode 424. Longest Repeating Character Replacement

LeetCode 424. Longest Repeating Character Replacement https://leetcode.com/problems/longest-repeating-character-replacement/ 题目描述 You are given a string s and an integer k. You can choose any character of the string and change it to any other upperc…...

建立自己的博客(记录-不推荐)

环境安装&#xff1a; w10系统安装 第一步&#xff1a;安装git Git 官网: https://git-scm.com/ 第二步&#xff1a;安装Node.js Node.js官网&#xff1a;https://nodejs.org/zh-cn/ 使用cmd检测&#xff1a; node -v 第三步&#xff1a;安装Hexo Hexo官网&#xff1a;htt…...

hashmap存储方式 hash碰撞及其解决方式

1.Map的存储特点 在Map这个结构中&#xff0c;数据是以键值对&#xff08;key-value&#xff09;的形式进行存储的&#xff0c;每一个存储进map的数据都是一一对应的。 创建一个Map结构可以使用new HashMap()以及new TreeMap()两种方式&#xff0c;两者之间的区别是&#xff1a…...

Amazon GuardDuty 的新增功能 – Amazon EBS 卷的恶意软件检测

亚马逊云科技开发者社区为开发者们提供全球的开发技术资源。这里有技术文档、开发案例、技术专栏、培训视频、活动与竞赛等。帮助中国开发者对接世界最前沿技术&#xff0c;观点&#xff0c;和项目&#xff0c;并将中国优秀开发者或技术推荐给全球云社区。如果你还没有关注/收藏…...

YOLOv7 pytorch

yolov7主干部分结构图&#xff1a;yolov7主干 yolov7数据集处理代码&#xff1a;yolov7数据集处理代码 yolov7训练参数解释&#xff1a;yolov7训练参数【与本文代码有区别】 yolov7训练代码详解&#xff1a;yolov7训练代码详解 目录 训练自己的训练集 训练自己的训练集 此…...

JDK自带JVM分析工具

一、JDK自带工具盘点&#xff1a; jstat&#xff1a;性能分析-查看gc情况&#xff1b; jmap&#xff1a;内存分析-堆信息&#xff1b; jstack&#xff1a;线程分析-栈信息&#xff1b; jinfo&#xff1a;参数查看及配置&#xff1b; jstatd&#xff1a;启动jvm监控服务。它…...

IO多路复用--[select | poll | epoll | Reactor]

因为在简历上写了netty的项目&#xff0c;因此还是将网络底层的那点东西搞清楚。 首先希望明确的是&#xff0c;BIO、NIO、IO多路复用这是不同的东西&#xff0c; 我会在本文中详细讲出来。 本文参考资料&#xff1a; JAVA IO模型 IO多路复用 select poll epoll介绍 从BIO到epo…...

pod的requests、limits解读、LimitRange资源配额、Qos服务质量等级、资源配额管理 Resource Quotas

前言 环境&#xff1a;k8s-v1.22.17 docker-20.10.9 centos-7.9 目录前言什么是可计算资源CPU、Memory计量单位pod资源请求、限额方式pod定义requests、limits查看节点资源情况pod使用request、limits示例LimitRange限制命名空间下的pod的资源配额Qos服务质量等级资源配额管理…...

R语言基础(六):函数

R语言基础(一)&#xff1a;注释、变量 R语言基础(二)&#xff1a;常用函数 R语言基础(三)&#xff1a;运算 R语言基础(四)&#xff1a;数据类型 R语言基础(五)&#xff1a;流程控制语句 7. 函数 函数是一组完成特定功能的语句。 7.1 内置函数 R语言系统中提供许多内置函数&…...

[C++] 简单序列化

前言 序列化(Serialization) 是将对象的状态信息转换为可以存储或传输的形式的过程。在序列化期间&#xff0c;对象将其当前状态写入到临时或持久性存储区。以后&#xff0c;可以通过从存储区中读取或反序列化对象的状态&#xff0c;重新创建该对象。 使用 序列化 std::array&…...

Autosar Configuration(十三)SomeIP之配置TCP/IP

本系列教程是根据实际项目开发中总结的经验所得,如发现有不对的地方,还请指正。 目录Autosar Configuration(一)Davinci Developer-工具介绍 Autosar Configuration(二)Davinci Developer-SWC配置 Autosar Configuration(三) Security之Crypto配置 Autosar Configurat…...

滤波算法 | 无迹卡尔曼滤波(UKF)算法及其Python实现

文章目录简介UKF滤波1. 概述和流程2. Python代码第一个版本a. KF滤波b. UKF滤波第二个版本简介 上一篇文章&#xff0c;我们介绍了UKF滤波公式及其MATLAB代码。在做视觉测量的过程中&#xff0c;基于OpenCV的开发包比较多&#xff0c;因此我们将UKF的MATLAB代码转到python中&a…...

IMU 积分的误差状态空间方程推导

文章目录0. 前言1. 离散时间的IMU运动学方程2. 状态变量定义3. 补充公式4. IMU误差状态空间方程推导4.1. 旋转误差 δr^i1\delta\hat{\mathbf{r}}_{i1}δr^i1​4.2. 速度误差 δv^i1\delta\hat{\mathbf{v}}_{i1}δv^i1​4.3. 平移误差 δpi1\delta \mathbf{p}_{i1}δpi1​4.4. …...

【独家首发】Sora 2正式版未公开能力清单:原生支持3D空间锚点+时间轴语义编辑+版权水印嵌入(附OpenAI内部文档节选)

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;Sora 2正式版核心能力全景概览 多模态时序理解与生成一体化 Sora 2正式版突破性地将文本、图像、音频及物理运动参数统一编码至共享时空潜空间&#xff0c;支持长达120秒、1080p分辨率的连贯视频生成。…...

全网没人敢说,关于中小企业AI营销一体机到底是卖硬件还是卖落地闭环的屎盆子,我先扣为敬。

[实话] 干这行十年&#xff0c;我拍着桌子定过一条死规矩。三个不做&#xff1a;不做只卖盒子不管结果的&#xff0c;不做签完合同就消失的&#xff0c;不做让你自己研究三个月才能用的。[实话] 现在的“AI营销一体机”&#xff0c;90%都是在收智商税。我见过太多老板&#xff…...

IO:为专业开发者打造的AI编程助手架构解析与实战指南

1. 项目概述&#xff1a;IO&#xff0c;一个为专业开发者打造的AI编程助手如果你和我一样&#xff0c;每天大部分时间都在和代码、终端、以及各种开发工具打交道&#xff0c;那你一定理解那种对“流畅感”的渴望。我们需要的不是一个只会回答问题的聊天机器人&#xff0c;而是一…...

原神帧率解锁技术解析:三步突破60FPS限制的完整方案

原神帧率解锁技术解析&#xff1a;三步突破60FPS限制的完整方案 【免费下载链接】genshin-fps-unlock unlocks the 60 fps cap 项目地址: https://gitcode.com/gh_mirrors/ge/genshin-fps-unlock 你是否曾为《原神》PC版的60FPS限制感到困扰&#xff1f;当你的高性能显卡…...

3个核心功能+5种使用场景:FanControl帮你打造Windows平台专属散热系统

3个核心功能5种使用场景&#xff1a;FanControl帮你打造Windows平台专属散热系统 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...

当1000A牵引电流遇上微安级信号:高铁轨道电路中扼流变压器的‘抗干扰’实战解析

高铁轨道电路中扼流变压器的抗干扰设计与工程实践 电气化铁路的轨道电路系统面临着前所未有的电磁兼容挑战——如何在承载1000A级牵引电流的钢轨上&#xff0c;同时可靠传输微安级的信号电流&#xff1f;这个看似矛盾的需求&#xff0c;正是现代高铁信号系统设计的核心难题之一…...

英特尔将雷电3集成进CPU:如何重塑高速接口生态与USB4标准

1. 项目概述&#xff1a;Thunderbolt 3的十字路口与英特尔的关键抉择如果你在2017年前后关注过PC和笔记本的接口演进&#xff0c;一定会对那个混乱的时期记忆犹新。一边是USB 3.0/3.1 Gen 1/Gen 2各种命名让人眼花缭乱&#xff0c;另一边是性能强悍但曲高和寡的Thunderbolt&…...

从CANdb++到Matlab:手把手教你读懂DBC文件里的信号映射与物理值转换

从CANdb到Matlab&#xff1a;手把手教你读懂DBC文件里的信号映射与物理值转换 在汽车电子和嵌入式系统开发中&#xff0c;DBC文件作为CAN总线通信的"字典"&#xff0c;承载着整车网络通信的核心协议。对于刚接触汽车网络通信的工程师来说&#xff0c;面对DBC文件中密…...

别只把Docker当虚拟机!《Docker实践》没细说的5个生产环境‘骚操作’

别只把Docker当虚拟机&#xff01;5个生产环境高阶实践指南 当团队从开发测试转向生产环境时&#xff0c;Docker的使用方式往往需要质的飞跃。许多工程师在初期将容器简单视为轻量级虚拟机&#xff0c;却忽略了容器化架构真正的威力。本文将揭示那些官方文档鲜少提及&#xff0…...

如何用Figma-to-JSON解决设计开发协作难题:4个实用场景详解

如何用Figma-to-JSON解决设计开发协作难题&#xff1a;4个实用场景详解 【免费下载链接】figma-to-json &#x1f4be; Read/Write Figma Files as JSON 项目地址: https://gitcode.com/gh_mirrors/fi/figma-to-json 在当今快速迭代的产品开发环境中&#xff0c;设计师与…...