• 缓存淘汰算法--LRU算法
  • 一个用hash表作为底层结构的数据库,当然少不了缓存淘汰算法。LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。1、新数据插入到链表头部;2、每当缓存命中(即缓存数据被访问),则将数据移到链表头部;3、当链表满的时候,将链表尾部的数据丢弃。过程如下:1、最开始时,内存空间是空的,因此依次进入A、B、C是没有问题的2、当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,...
  •  2020-06-15  |    程成  |    282  |    1  |    其他  |   LRU  算法  缓存淘汰  
  • 阻塞与非阻塞的区别
  • 简单点说:阻塞就是干不完不准回来,   非阻塞就是你先干,我现看看有其他事没有,完了告诉我一声我们拿最常用的send和recv两个函数来说吧...比如你调用send函数发送一定的Byte,在系统内部send做的工作其实只是把数据传输(Copy)到TCP/IP协议栈的输出缓冲区,它执行成功并不代表数据已经成功的发送出去了,如果TCP/IP协议栈没有足够的可用缓冲区来保存你Copy过来的数据的话...这时候就体现出阻塞和非阻塞的不同之处了:对于阻塞模式的socket s...
  •  2020-06-15  |    程成  |    294  |    0  |    其他  |   阻塞  区别  
  • 进程和线程、协程的区别
  • 现在多进程多线程已经是老生常谈了,协程也在最近几年流行起来。python中有协程库gevent,go里面的goroutine也是一个非常棒的协程库。本文主要介绍进程、线程和协程三者之间的区别。概念进程进程(Process)是计算机中的程序关于某数据集合上的一次运行活动,是系统进行资源分配和调度的基本单位,也是基本的执行单元,是操作系统结构的基础。每个进程都有自己的独立内存空间,不同进程通过进程间通信来通信。由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句...
  •  2020-06-12  |    程成  |    271  |    0  |    其他  |   进程  协程  线程  
  • 线程和进程的关系及区别
  • 1.定义一个程序至少有一个进程,一个进程至少有一个线程。进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位.线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位.线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源.2.关系一个线程可以创建和撤销另一个线程;同一个进程中的多个线程之间可以并发执行.相对进程而...
  •  2020-06-12  |    程成  |    234  |    0  |    其他  |   线程  进程