首页
学习
活动
专区
工具
TVP
发布

我是攻城师

专栏作者
492
文章
962622
阅读量
119
订阅数
如何动手撸一个LRU缓存
上篇文章介绍了,如何动手实现一个LFU缓存,今天我们来学习下如何动手实现一个LRU缓存,在这之前,我们还是先回顾下关于缓存置换算法的三种策略:
我是攻城师
2019-07-31
5980
如何动手撸一个简单的LFU缓存
关于第一种FIFO策略的实现,比较简单,可采用固定长度的数组和链表来处理,这里就不重点说了。今天我们的重点是LFU缓存的实现。
我是攻城师
2019-07-30
1.1K0
什么是缓存置换算法?
前面的文章已经介绍了什么是操作系统的虚拟内存,与本文要介绍的缓存置换算法息息相关,如果还没有看的朋友,建议先读一下上篇文章,链接是:什么是操作系统的虚拟内存?
我是攻城师
2019-07-19
1.7K0
为什么Java里面String类是不可变的
在Java里面String类型是不可变对象,这一点毫无疑问,那么为什么Java语言的设计者要把String类型设计成不可变对象呢?这是一个值得思考的问题。
我是攻城师
2019-03-06
6970
为什么单线程Redis性能也很出色
高性能的服务器,不一定是多线程实现的,也就是说多线程不一定比单线程效率高,这得分具体的情况。以redis为例,核心处理请求的线程只有一个,所以我们常常理解其仅仅只有一个线程,但准确来说其实并不是单线程的,比如日志的备份需要单独的fork一个进程或者线程去做备份等,那么redis何来单线程还能达到如此10万+的qps呢?其实这取决于具体的实现,redis采用了基于高性能Reactor的IO多路复用的模式+内存数据结构+单线程处理网络请求这几块,决定了其性能高的原因。
我是攻城师
2019-03-06
8480
关于Java的BIO,NIO和AIO的演进
Java里面的IO模型种类较多,主要包括BIO,NIO和AIO,每个IO模型都有不一样的地方,那么这些IO模型是如何演变呢,底层的原理又是怎样的呢? 本文我们就来聊聊。
我是攻城师
2018-12-17
9660
IO设计模式之Reactor和Proactor
上面文章中,我们提到不同的操作系统实现的io策略可能不一样,即使是同一个操作系统也可能存在多重io策略,常见如linux上的select,poll,epoll,面对这么多不同类型的io接口,这里需要一层抽象api来完成,所以就演变出来两种高性能的io的设计模式,分别是Reactor(同步IO)和Proactor(异步IO)。
我是攻城师
2018-12-17
3.2K1
理解JVM垃圾回收的机制
其中(1)和(2)我们在之前已经介绍过了,今天我们来学习一下关于JVM垃圾回收(Garbage Collection)的内容:
我是攻城师
2018-10-19
6280
理解Java并发工具包线程池的设计
创建线程的流程依赖底层的操作系统,不同的操作系统可能不一样,此外更多的线程意味着 OS调度需要做更多的工作来决定哪一个线程可以访问资源,并且要通过OS调度切换维护线程的各种状态。
我是攻城师
2018-09-30
6930
理解Java并发工具类CountDownLatch
CountDownLatch相信大家并不陌生,我们在上篇文章中已经分析其实现,这里在简单回顾一下CountDownLatch是基于AQS共享锁构建的一种同步器,它的主要应用场景有两种:
我是攻城师
2018-09-30
1K1
为什么说Elasticsearch搜索是近实时的?
通过前面两篇文章的介绍,我们大概已经知道了 Elasticsearch处理数据的流程,其中在Elasticsearch和磁盘之间还有一层称为FileSystem Cache的系统缓存,正是由于这层cache的存在才使得es能够拥有更快搜索响应能力。 我们都知道一个index是由若干个segment组成,随着每个segment的不断增长,我们索引一条数据后可能要经过分钟级别的延迟才能被搜索,为什么有种这么大的延迟,这里面的瓶颈点主要在磁盘。 持久化一个segment需要fsync操作用来确保segment能够
我是攻城师
2018-05-15
3.7K0
Nginx入门介绍与安装
Nginx是什么? Nginx是俄罗斯人编写的十分轻量级的HTTP和反向代理服务器。发音:"engine X" Nginx能干什么? (1)Http反向代理 Nginx 支持正则表达式以区分静态资源或
我是攻城师
2018-05-14
5590
你选的不是专业,而是阶级
我四年前选的不是专业,而是阶级。 我想说,对的,你的收入不取决于你的能力,而取决于社会对你的需求,而现在就是互联网最好的年代。 并且我大胆的预测,编程能力也会和英语一样,以后是学生的基本技能。 现在一线互联网企业,在985高校招聘cs相关专业应届毕业生,一般白菜打包价都在16*16以上。想一想多少专业,混到顶尖前5%,工作十年也还达不到这个数。所以说,当初选了专业,几乎真就是选了阶级。 废话说完,就像网游打怪升级一样,我这个摸打滚爬了6年多的老鸟来分享下自认为正确的程序员练级路线。 先说目标 除去自主创业,
我是攻城师
2018-05-14
8200
10行Java代码实现最近被使用(LRU)缓存
在最近的面试中,我曾被多次问到,怎么实现一个最近最少使用(LRU)的缓存。缓存可以通过哈希表来实现,然而为这个缓存增加大小限制会变成另一个有意思的问题。现在我们看一下怎么实现。 最近最少使用缓存的回收
我是攻城师
2018-05-11
1K0
spark总体概况
1. spark vs hadoop PS:Databricks团队特别说明,为了和Hadoop对比,这次用于排序的Spark集群没有使用它们的内存缓存机制,他们也是用硬盘存储的中间结果! http
我是攻城师
2018-05-11
6480
没有更多了
社区活动
RAG七天入门训练营
鹅厂大牛手把手带你上手实战
Python精品学习库
代码在线跑,知识轻松学
博客搬家 | 分享价值百万资源包
自行/邀约他人一键搬运博客,速成社区影响力并领取好礼
技术创作特训营·精选知识专栏
往期视频·千货材料·成员作品 最新动态
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档