分而治之,保持胜利果实

news/2025/1/11 23:00:33/

    测完考试系统,去找米老师说了一下测试结果,因为考试系统涉及到大数据问题,主要是并发问题,米老师顺便给我们几个出了一个面试题,“如果需要遍历上百万条,或者上千万条,或者上亿条数据,我们该怎么办?”

    当然,我们几个人都各自说了一下自己的想法,比如分布式啦,多线程啦,还有服从二八定律把常用的搜集起来啦等等,最后,米老师在我们的基础上,又继续给我们升华了一下,那就是,分而治之,保持胜利果实。

    数据量大,所以我们可以分开管理,可以利用数据表分区,分布式,多线程,这都是分而治之的实现,只有分而治之是不够的,当我们分而治之后,还要继续保持胜利的果实,比如,我们用索引,数据冗余等形式来实现对已经查询数据进行保持,如果我们需要查询近三年一个饭店的营业情况,我们就可以利用平时,把每个月的情况放到一个表里,然后再根据每个月的情况把每年的情况放到一个表里,最后,当我们查询近三年的情况的时候,只需要总和每年的情况就可以了,当然,这里每个月和每年的情况属于冗余数据,因为我们完全可以通过计算每天的营业情况获得,但是为了我们查询的更快,我们这里需要这样的冗余表,同时,每个月、每年的情况,属于我们保存胜利的果实。

    除了数据查询,这种思想也可以用在其他很多方面,比如我们需要缓冲一个特别大的文件的时候,就可以才用“分而治之”的思想,先缓冲一部分,在可以使用这部分的同时,在缓冲下一部分,给用户更好的体验,其实这种思想从百度、谷歌这样的搜索引擎中就可以看到,即使你查询的东西有几百万条数据,它也不会一下子全部查询出,而是一部分、一部分的显示,让你有一个舒适的使用过程。而每次查询出的第一页,都是最常用的,也是谷歌百度运用“保持胜利果实”这种思想的一个实力,因为它把用户经常查询的东西进行整理保持,然后继续给后面的用户使用,它们把这种从用户那里获取来的“果实”,继续为用户服务。

    当然,跳出程序,在生活中我们依旧需要这种思想,当我们做程序时,总会被这样或那样的问题所困扰,这个时候,我觉得我们必须想一想,是不是我把这个问题想得太复杂了,如果这些问题是一个大西瓜的话,我们是不是总是在想如果一口气把这个西瓜吃掉,而不是把它切成一块一块的,或者说现在的英语,如果告诉你你要背三千个单词,你是不是一下子要被吓晕的感觉,但是如果告诉你你只需要每天背60个单词,然后背一个多月不到两个月就背完了是不是有没有轻松一些,然后继续告诉你每天虽然是60个单词但是你只需要花费二十分钟的时候是不是又可以松一口气,如果继续往下说,二十分钟只是两个课间的长度哦亲,是不是一下子觉得这件事情太简单了,因为每天学习的时间在九到十个小时,两个十分钟的话那就显得太少了,因为也许你每天酝酿睡觉,想想吃啥都不止二十分钟,这就是“分而治之”的一种思想实现。当然,我们知道现在用的背单词的“百词斩”,会把你常错单词反复出现,这也是一种“保持胜利果实”的实现。

    有时候很多困难看起来很难,其实只要一点点去分析,然后把分析的结果加以利用,我想,任何事情都会变得简单,用简单的眼光是看事物,这个世界上就没有了难事。

 

 


http://www.ppmy.cn/news/632158.html

相关文章

CMake mingw 编译glm

1 路径参考如下: 上面的路径中不能有中文 2 勾选要生成的library 3 修改一下安装路径,默认如下图所示,可以换成其它的路径 4 开始生成 点两次,显示Configuring done之后, 再点 , 5 编译 然后 cd 到 &a…

C语言的宏macro的使用

Cs Macro Introduction 1.The Connect Macros: ## 这是一个预处理连接符&#xff0c;这个操作符主要用来将两个符号连接成为一个完整的宏符号。通过下面的代码&#xff0c;可以看到其具体的使用方法: 如下例子: #include <stdio.h> struct macro {int N;char M; }; struc…

我的个人宏文件

Public N As Integer Sub 当前表总行数() ActiveSheet.UsedRange.Rows.Count 当前表总行数 Macro 宏由录制&#xff0c;时间: 2008-8-6 ActiveSheet.Select For i 65536 To 1 Step -1 If Cells(i, 1) <> "" Then N i h MsgBox(…

【为宏正名】99%人都不知道的“##“里用法

【说在前面的话】 有人说C语言中最臭名昭著的两兄弟就是指针和宏了。对于前者&#xff0c;很多有经验的老鸟会告诉你&#xff1a;用好了指针你就掌握了C语言的内功心法——如同原力一样&#xff0c;无论是追随光明还是堕入黑暗都离不开它。宏就没这么幸运了&#xff0c;不光年年…

linux gcc 宏定义 __GNUC__ __GNUC_MINOR__ 版本区分

今天在看Linux系统编程这本书的代码的时候看到了__GNUC__&#xff0c;不太清楚这个宏所以去查了一下&#xff0c;以此记录。GNU C预定义了一系列的宏&#xff0c;这些宏都是以双下划线开始的&#xff0c;这里只讲一下__GNUC__ __GNUC_MINOR__ __GNUC_PATCHLEVEL__&#xff0c;…

灰色的果实

灰色的果实 问题描述 树为灰色果实之树&#xff0c;不定时会长出灰色果实。贸然接近果实只会使得自己受其迷惑最后神经错乱而 浑浑噩噩不得终日&#xff0c;与死人无异。你的目标是成功到达树的顶端&#xff0c;砍下灰色果实的灵脉。 为了能够免除灰色果实的影响&#xff0…

告诉你什么是 Java 宏变量,别再疑惑不解了

小编第一次被问到这个概念时&#xff0c;确实是有点懵。入行没多久&#xff0c;莫怪莫怪&#xff01;后来翻阅一些资料和博客&#xff0c;才豁然开朗。 小编认为Java中其实没有关于宏的定义&#xff0c;《Thinking in Java》中我也没有找到相关的介绍。这个概念应该是从C语言中…

恶魔果实

组合题&#xff08;牛客&#xff09;: 恶魔果实. 题目描述 牛牛得到了一堆神奇的恶魔果实&#xff0c;每个恶魔果实都给了牛牛一个改变数字的能力&#xff0c;可以把数字a变成数字b&#xff0c;现在牛牛有一个数字x&#xff0c;他想知道吃完这n个恶魔果实后&#xff0c;他可以…