内容来自【黑夜路人技术讨论群】

【今日话题】

像算法,数据结构在实际开发中使用得多吗?有哪些使用例子? - young-chen

1. 貌似用得不多。基本的排序二分查找倒是用过。 我觉得用得多不多和技术方向有关系 - xiayf

2. 处理数据的算法用得多~处理逻辑的算法相对少~数据结构几乎所有的地方都用的到~ - xingxing

3. 用过LRU和MRU - darkmi

4. lockless的方法不少 - Ragnarok

5. 好高级,这些也只能在了解原理的时候去看看。。实际业务中也就是拿来主义 - tywei

6. 二分法在排序中用的很多,然后还有Tire树,另外TOP K的应用场景也比较多 - 青衫隐_刘

7. Redis里都是数据结构 - 菜包子

8. 实际工作里的算法应用挺多的

我们天天生活在各种数据结构算法构建好的世界里

我们每天用的linux,我们在上面执行各种命令,比如找文件建目录,我们启动各种服务,我们写各种程序来跑。

比如创建文件,调用的各种文件系统调用(open/write/read),系统调用下面是VFS(虚拟文件系统),下面是各种具体的文件系统,比如ext3/xfs/zfs之类,而这些文件系统会通过硬盘驱动访问硬盘,硬盘机械把数据固化在盘片上。

文件系统如何管理这些文件在磁盘上,方便建立文件删除文件回收空间等,就需要很多文件系统管理算法。 - 黑夜路人

9. 求助:php无限分类,如何查询某个大分类下的所有子分类,

场景:a,b,c,d 为一级分类;a1,a2,a3,a4为a下的子分类;a11,a12,a13,a14为a1下的子分类

问题:当查询a下所有文章时候,需要对a分类下,所有子分类的id集合,然后sql 用 where in();求高效的算法 - 竹子

回: php就是递归 - 淘小淘

回: 竹子,就是无限递归呗,而且你不是无限的(说是无限),还是能够搞定。 - 黑夜路人

10. 我们用的linux还帮我们管理cpu资源,核心就是让哪个进程访问cpu其他的进程等着,这就涉及到进程调度算法,写的坏的算法就杯具了。现在是多核时代,这个管理算法要求又更高。

我们自己用linux写一个自己的程序,我们malloc/free自己申请释放内存,涉及到操作系统针对内存管理算法。大块内容管理,内存释放,空闲内存回收等等,很多策略,又诞生了很多内存管理算法。比如著名的glbc自带的ptmalloc,还有流行的 tcmalloc ,jemalloc 等内存管理算法库。

在内存管理方向,我们诞生了很多不止是操作系统的管理算法,应用层也出了很多应用,比如我们知道的memcached/redis/aerospike等。memcached内存管理算法就是slab-class机制,redis的内存处理就更丰富一些。 - 黑夜路人

11. 除了高大上的操作系统,我们日常程序或者使用的各种工具里很多算法实现。

我们用strings查找符号表,用sed/awk使用正则来查找过滤文件字符串等等,都需要常规的字符串算法,比如查找子串,比如状态机,比如词法分析等。 - 黑夜路人

12. 除了工具,我们每天接触的常用软件,比如php/nginx/mysql等,哪个都是基本数据结构算法环绕。

php引擎内置各种算法,比如zend vm的词法语法分析;数组的内部实现,用的是hashtable+linklist;内存管理垃圾回收机制等。

nginx的连接处理分配算法;定时器实现算法;内存管理算法;自己的锁算法等。

mysql的查询sql解析;查询优化算法;文件索引存储算法;内存缓存管理算法……

凡此种种,我们不是生活在一个基本算法环绕的技术世界。支撑我们每时每刻的技术工作和生活所需:你家的电视跑着安卓,你家的无线路由器跑着openwrt,你的手机跑着安卓/ios,你的洗衣机跑着51单片机,你的冰箱跑着vmworks……

算法环绕的世界! - 黑夜路人

13. memcached做集群时候,一致性hash算法,flexihash 这个应该用的比较多 说到memcached,那就要说它的内存分配算法,slab 哈,php,里面也有个hashtable啊 - 星星bigxing

14. 我用过的,bloom filter,线段树,后缀数组,树状数组,倒排索引,伸展树 - 廖强

15. 布隆过滤器,上面说的数组用过 - BE GEEK

16. hyperloglog. map. twin cache 這算設計模式了 - timedcy

17. 抽奖算法 用过一次 不过是代码的搬运工 人家写的. php几个常用的概率算法(抽奖、广告首选) http://old.idler365.com/blog/PHP/111.html - 周渊

回: 抽奖算法 是随机过程+排序算法 看随机数落在哪个区间 - 苹果

回: 我手游的抽卡系统,我都是算法二 - JoJo

【分享链接】

1. 大话同步/异步、阻塞/非阻塞 http://mp.weixin.qq.com/s?__biz=MzA4MDgxNTM3NA==&mid=205342017&idx=2&sn=c4a035caecd1711df6ff8b0b374401b2 - @理鱼

2. dot 加graphviz 画流程图 http://zh.wikipedia.org/zh-cn/DOT%E8%AF%AD%E8%A8%80 - 弹痕

3. 恐怖!全球首款6TB固态硬盘来袭 http://mp.weixin.qq.com/s?__biz=MTE3MzE4MTAyMQ==&mid=206391798&idx=3&sn=a94d018ee78a35af55de8000f207367c - 黑夜路人

4. 搭建 ngrok 服务实现内网穿透 http://www.tuicool.com/wx/vmERjeI - 黑夜路人

5. 《我要上头条》第三期:Beego 作者 Asta http://mp.weixin.qq.com/s?__biz=MjM5MzA0ODkyMA==&mid=208770698&idx=1&sn=b08ede5d3f58960e3ac4e2d420c3da28 - Asta Xie

6. PHP Hash比较存在缺陷,影响大量Web网站登录认证、忘记密码等关键业务 http://mp.weixin.qq.com/s?__biz=MjM5MTA5NjUxMQ==&mid=207079091&idx=1&sn=fbd70cfc628c48ae415b0552d12cba88 - 黑夜路人