Golang实现LRU

LRU LRU算法即淘汰最近一段时间内没有被访问(命中)的数据,最理想的实现方法为双链表+Hash表。 双链表:新加入/新命中的节点放到表尾,空间用完需要淘汰的时候,删除表头(最近一段时间没有被命中)。 双链表可以使添加删除的时间复杂度降到O(1) Hash表:访问的时间复杂度降到O(1) 实现 具体流程写在注释内: ...

2020/02/19 · 3 分钟 · 1203 字 · Aris

理解select和epoll

背景 高并发场景常常想到用多线程来接收网络请求 但是多线程会涉及到CPU的上下问切换,会处理一些操作句柄,连接数比较多的时候,会带来极大的开销 多线程并不是最佳的解决方案! ...

2020/01/15 · 4 分钟 · 2003 字 · Aris

操作系统

面试CS基础——操作系统笔记 一、操作系统概述 操作系统四个特性 并发:同一段时间内多个程序执行。并行(同一时刻多个事件)和并发(同一个时间段多个事件) 并发:同一时间段运行多个程序,操作系统通过进程和线程实现 并行:同一时刻运行多个指令,需要硬件支持,流水线、多核、分布式 共享:系统资源可以被内存中的多个并发执行的进程共用 互斥共享(临界资源,比如打印机)和同时共享 虚拟:通过 时分复用(多道程序技术 分时系统)和空分复用(虚拟内存)技术把一个物理实体虚拟为多个实体 时分复用:多进程在一个处理器并发执行,让每个进程轮流占有处理器,用小时间片快速切换 空分复用:虚拟内存,物理内存抽象为地址空间。 地址空间的页不需要全部在物理内存中,若使用到 不在物理内存 的页时,执行页面置换算法,把页置换到内存中 异步:进程是走走停停的方式执行的,以一种不可预知的速度推进 操作系统主要功能 进程管理:进程控制、进程同步、进程通信、死锁处理、处理机调度 内存管理:内存分配、地址映射、内存保护和共享、虚拟内存 文件管理:存储空间、目录、读写管理和保护 设备管理:处理用户的IO请求、缓冲管理、设备分配、设备管理等 中断和轮询 轮询 早期计算机系统对 I/O 设备的管理方式。 ...

2019/07/15 · 14 分钟 · 6885 字 · Aris