写点什么

数据结构和算法应用

用户头像
HQ数字卡
关注
发布于: 5 小时前

数据结构和算法是我们编程的基础,在工程应用中也非常实用。除了常见的各种中间件和框架,我们在日常工作中也是大量使用。下面分享给大家两个常见的例子。

请求限流

  • 计算资源一般指计算机程序运行时所需的 CPU 资源、内存资源、硬盘资源和网络资源。在我们的日常程序运行中,资源往往是有限的。因此,我们需要掌握程序的 QPS,设置合理的请求阈值,保障服务的高效,稳定运行。

  • 常见的需求如下:xx 接口 id 字段查询,每次最多支持 100 个。

  • 分析需求,我们既可以使用计算器计算 id 的数量,然后去请求。也可以通过系统函数,合理划分数据,分步请求。


需求实现伪代码如下:


// 初始化请求id列表List<Integer> ids = new LinkedList<>();for (int i = 1; i < 1000; i++) {  ids.add(i);}

// 方案1: 使用常规计算,分步请求。int cnt = 1;List<Integer> requestIds = new LinkedList<>(); for (Integer id : ids) { requestIds.add(id); if (cnt % 100 == 0) { sendRequest(requestIds); requestIds = new LinkedList<>(); } cnt++;}if (requestIds.size() > 0) { sendRequest(requestIds);}
// 方案2: 按长度划分子列表,代码简洁。int step = 100;int n = ids.size();for (int k = 0; k < n; k += step) { int end = Math.min(k + step, n); List<Integer> requestIds = ids.subList(k, end); sendRequest(requestIds);}
复制代码


  • 其中方案 2 的代码更加简洁,实现效率高。推荐大家使用。

  • 遇到这样的需求,你会如何实现呢?欢迎与我交流。

层级关系设计

我们已经学习了树这种数据结构,直观的观察,树是一种有层级的结构。


在实际使用中,我们树这种设计思想设计业务的层级结构。


比如:常见的菜单分类,核心字段可以设计如下:


数据库字段:


id int(11)name varchar(10)parend_id int(11)
复制代码


  • 其中,name 是菜单的名称, parend_id 代表父节点的 ID。一般情况下,我们设置 parend_id 为 0,代表第一层节点。

  • 这样的设计,节省了表空间,数据维护也比较方便。

总结

  • 以上是我在日常工作中,对数据结构的简单应用。你在工作中,有哪些场景应用数据结构和算法呢?欢迎和我交流。

发布于: 5 小时前阅读数: 4
用户头像

HQ数字卡

关注

还未添加个人签名 2019.09.29 加入

LeetCode,略懂后端的RD

评论

发布
暂无评论
数据结构和算法应用