过去几年的开发生涯,我一直都在思考 技术成长/核心竞争力 这些命题。程序员这个行业面临的年龄危机和焦虑感是前所未见的,这些命题也将伴随程序员的整个职业生涯。在...
单线程能够避免线程切换和竞态产生的消耗,而且单线程可以简化数据结构和算法的实现 至于单线程还快,是因为Redis是基于内存的数据库,内存响应速度是很快的,并且采用epoll作为I/O多路复用技术,再加上Redis自身的事件处理模...
实现中心缓存之前,我们先理解中心缓存需要做那些事情,具有哪些特性?我们把中心缓存的功能特性理解清楚了自然而然的就可以写出代码来!
现代很多的开发环境都是多核多线程,在申请内存的场景下,必然会存在激烈的锁竞争问题,锁竞争会有一部分的性能损耗(因为需要阻塞等待)。malloc本身其实已经很优秀,那么我们项目的原型tcmalloc就是在多线程高并发的场景下更胜...
首先我们来看页缓存的设计思路,明白思路,代码就可以更加舒畅的写出来,并且这个项目的调试比较困难,一定一定要仔细明白设计思路,把代码仔细写好才能保证我们的开发效率!...
我们需要实现的是一个这样的效果:线程缓存(256KB)中每个空间位置映射到在哈希表上,对应一个自由链表,申请空间时从自由链表中取出一个对象,没有就去中心缓存进行申请!...
在现代 Web 开发中,字体文件通常是页面加载时间的重要因素之一。特别是在字体文件较大或网络环境不佳的情况下,用户体验可能会受到影响。本文将详细探讨如何在 Vue.js 项目中优化字体文件的加载和缓存,以提高页面性能。...
缓存和ConcurrentMap有点相似,但还是有所区别。最根本的区别是ConcurrentMap将会持有所有加入到缓存当中的元素,直到它们被从缓存当中手动移除。但是,Caffeine的缓存Cache 通常会被配置成自动驱逐缓存中元素,以限制其内存...
几年前给公司前台业务一个QPS很高的接口做了一个优化,主要请求来源是当前在线用户,接口核心逻辑就是从codis中根据一个数字查询对应的用户id(小于1亿),这两个数字的映射关系是不变的,可以理解为codis中有一个map[uint32]u...
本文以go1.14 darwin/amd64中的原子操作为例,探究原子操作的汇编实现,引出LOCK指令前缀、可见性、MESI协议、Store Buffer、Invalid Queue、内存屏障,通过对CPU体系结构的探究,从而理解以上概念,并在最终给出一些事实。...