后端

业务拆分原则介绍

1. 常见的做法 常见的错误做法: 服务拆分粒度越小越好 按照大公司的套路拆分 以代码量为拆分标准 拆分核心三原则: 2. 服务粒度匹配团队规模 服务粒度过细的问题,可以先看下面的两个图 可以看到,服务粒度过多时,虽然单个服务的内容可以减少,但是服务间调用关系的复杂度程指数级的增长,这同样也是很可怕的一件事 如果项目的人员不多,那么划分过多的服务

第一章 理解高性能程序 (9) 保持缓存的热度

保持缓存的热度        首先,别浪费缓存,因为主存很慢。这意味着无序地从内存中读取数据(被称为指针追逐pointer-chasing)并非明智。在现代处理器上,程序以预测的方式读取连续的内存块,可以受益于硬件级的预读取(prefetching)机制。一言以蔽之,即数据局部化(data locality)。        举个反面例子,唉,是我们古老而可靠的链表,遍历链表是一次实实在在的指

数组的基本概念和基本用法

一.数组基本概念 1.1 什么是数组 数组是用来存储多个连续数据类型相同的数据 1.2 什么是数组元素 数组中的每个数据就是数组元素 1.3 什么是数组长度 数组的元素个数就是数组长度 数组的长度在为数组元素分配空间时就已经确定了大小 二.使用数组 2.1 使用数组分4步: 1. 定义数组 2. 为数组元素分配内存 3. 数组元素初始化

【Spring】@RequestMapping、@RestController和Postman

文章目录 1.@RequestMapping 注解介绍 2. @RequestMapping 使用 3. @RequestMapping 是 GET 还是 POST 请求? GET 请求 POST 请求 指定 GET/POST 方法类型 2. Postman 介绍 1. 创建请求 2. 传参介绍 1. 普通传参 2. form

Lottie动画文件压缩

前言 项目中引入了“大量的”lottile动画文件以优化动画显示效果,稍微统计了下,共20多个,小的几十k,大的1.33M,总大小超过8M,apk包体积急速膨胀。 使用的lottie文件统计.png 解决方案 由于项目中显示动画的需要,引入了大量的Lottie动图,以优化显示效果导致包体积急速膨胀,目前可以想到的解决方案主要有如下2种: 方案1)远端方案 将lottie json文件放

05.最长回文子串

05.最长回文子串 问题引入: 给定一个字符串 s,找到 s 中最长的回文子串。你可以假设 s 的最大长度为 1000。 示例 1: 输入: "babad" 输出: "bab" 注意: "aba" 也是一个有效答案。 示例 2: 输入: "cbbd" 输出: "bb" 1. 方法一:暴力法 思路:列举所有的子串,找到最长的回文串 时间复杂度:O(n^3),两次for循环,判断是否回文还有一

Redis大key 问题分析解决

背景 双十一大促期间, 收到客服反馈通知,说 APP 领券接口缓慢。找到一个case,通过调用链路发现,是操作redis 缓慢,并且还搜到一些redis 异常。 最后定位到原因:是发券场景下拿redis 做了一个缓存券批次的操作,记录用户当天领取的所有券批次 发券场景: key = userId, value = 券批次ID 列表, 而redis 查询发现多了许多大key,体现在 一个用户领取的几