大家好,今天小编关注到一个比较有意思的话题,就是关于算法史书籍推荐的问题,于是小编就整理了2个相关介绍算法史书籍推荐的解答,让我们一起看看吧。
十大计算机经典书籍?
答:深入理解计算机系统,算法导论,计算机程序设计艺术,j***a编程思想,c程序设计语言,现代编译原理,操作系统概论,设计模式,计算机组成与设计,数据结构与算法分析,计算机网络自顶向下方法,深入理解计算机系统,计算机组成原理,数据库系统概论。
《深入理解计算机系统》
这是我第三次翻开这本书了,第一次是在大一下,那时候只学了 C 语言基础,翻了几章,根本看不懂。第二次是大三,当时上《系统级编程》课程,这一次有了操作系统、汇编等基础,读起来顺畅很多,也顺带着做了Lab
《 Designing Data-Intensive Applications》
简称,DDIA,也是被很多大 V 推荐过的一本书,全书以数据为核心,这本书从抽象层次上详细论述了各种数据存储模型,包括传统关系型数据库、NoSQL、大数据存储、流式数据存储等等,由浅入深。虽然这些方面平时或多或少都接触过一些,但是说实话很多内部机制、各种数据存储的利弊、如何取舍都理解得非常粗浅,这本书读下来有一种让人豁然开朗的感受。
正所谓数据是架构的核心,推荐所有后台开发工程师都读一下,因为现在的互联网业务,本质上就是一个数据处理系统:一个浅应用层包裹着的复杂的数据系统,充分理解数据系统的运作和设计非常必要
《算法导论》、《计算机程序设计艺术》、《编译原理》、《操作系统设计与实现》、《计算机网络》、《计算机体系结构:量化研究方法》、《深入理解计算机系统》、《TCP/IP详解卷一:协议》、《计算机组成原理——硬件/软件接口》、《编码:隐匿在计算机软硬件背后的语言》
这十本书都有着深厚的学术背景和严谨的架构,可以让读者深入理解计算机的原理,建立完整的计算机知识体系
如果想成为一名优秀的计算机专业人员,这十本书是必不可少的,而且这些书籍也非常适合对计算机有着浓厚兴趣的社会人士来读
lfu算法优缺点?
在LFU算法中,可以为每个key维护一个计数器。每次key被访问的时候,计数器增大。计数器越大,可以约等于访问越频繁。
上述简单算法存在两个问题:
在LRU算法中可以维护一个双向链表,然后简单的把被访问的节点移至链表开头,但在LFU中是不可行的,节点要严格按照计数器进行排序,新增节点或者更新节点位置时,时间复杂度可能达到O(N)。
只是简单的增加计数器的方法并不完美。访问模式是会频繁变化的,一段时间内频繁访问的key一段时间之后可能会很少被访问到,只增加计数器并不能体现这种趋势。
第一个问题很好解决,可以借鉴LRU实现的经验,维护一个待淘汰key的pool。第二个问题的解决办法是,记录key最后一个被访问的时间,然后随着时间推移,降低计数器。
Redis对象的结构如下:
typedef struct redisObject {
unsigned type:4;
LFU(Least Frequently Used)算法是一种常见的页面置换算法,用于在内存中存储有限的页面。这种算法选择访问次数最少的页面进行替换,以尽可能地减少页面失效的发生。
LFU算法的优点包括:
1. 减少了页面失效的次数:由于LFU算法选择访问次数最少的页面进行替换,因此在大多数情况下,它可以有效地减少页面失效的次数,从而提高系统的性能。
2. 无需预测未来的访问序列:与其他一些页面置换算法如LRU(Least Recently Used)算法相比,LFU算法不需要预测未来的访问序列,因此更加简单和易于实现。
然而,LFU算法也存在一些缺点:
1. 难以处理突发性访问:当一个页面被频繁访问时,LFU算法可能会将其替换出去,导致后续的请求需要重新从磁盘中读取该页面,从而增加了系统的负载。
到此,以上就是小编对于算法史书籍推荐的问题就介绍到这了,希望介绍关于算法史书籍推荐的2点解答对大家有用。