算法
sandyznb
这个作者很懒,什么都没留下…
展开
-
LRU算法 缓存淘汰算法
LRU(Least recently used,最近最少使用)算法根据数据的历史访问记录来进行淘汰数据,其核心思想是“如果数据最近被访问过,那么将来被访问的几率也更高”。新数据插入到链表头部; 每当缓存命中(即缓存数据被访问),则将数据移到链表头部; 当链表满的时候,将链表尾部的数据丢弃。最开始时,内存空间是空的,因此依次进入A、B、C是没有问题的 当加入D时,就出现了问题,内存空间不够了,因此根据LRU算法,内存空间中A待的时间最为久远,选择A,将其淘汰 当再次引用B时,内存..原创 2021-07-16 16:03:14 · 166 阅读 · 1 评论 -
Golang 单链表反转
type NodeX struct { value int next *NodeX}func createNodeList() *NodeX { var head *NodeX for i := 0; i < 5; i++ { tmp := &NodeX{ value: i, next: nil, } tmp.next = head //头插 head = tmp } return head}func reverseNodeList(h.原创 2021-07-13 17:20:53 · 217 阅读 · 0 评论 -
数据结构---跳跃表
跳表是一个随机化的数据结构,实质是一种可以进行二分查找的有序链表。跳表在原有的有序链表上增加了多级索引,通过索引来实现快速查询。跳表不仅能提高搜索性能,同时也可以提高插入和删除操作的性能。...原创 2021-06-16 17:54:36 · 126 阅读 · 0 评论 -
AOI 十字链路 (半径不同)
import mathclass CEntity(object): def __init__(self,cid,x,y,xradius,yradius): self.cid = cid self.x = x self.y = y self.xradius = xradius self.yradius = yradius self.xpre = None self.xnext = ..原创 2021-06-02 11:19:12 · 196 阅读 · 0 评论 -
AOI 十字链表法(半径相同)
AOI主要有九宫格、灯塔和十字链表的算法实现。本文阐述十字链表的实现目前就考虑的是二维坐标,若是二维地图,将地图内的对象按照坐标值,从小到大分在x轴和y轴两个链表上。如果是三维地图,则还需要维护多一个z轴的链表...原创 2021-06-01 16:50:07 · 625 阅读 · 0 评论 -
leetcode
https://books.halfrost.com/leetcode/原创 2021-03-05 09:38:54 · 53 阅读 · 1 评论 -
一致性hash
#coding:utf-8'''create on 2017-07-13@author:sandy'''import crc16pureclass Node(object): def __init__(self,ip,name,virtual): self.ip = ip self.name = name self.virtual = virtual def getIp(self): return sel..原创 2020-11-24 14:34:39 · 77 阅读 · 0 评论 -
一个分布式ID的生成器-雪花算法
#coding:utf-8'''create on 2020-11-23@author:sandy'''import timeclass SnowFlake(object): def __init__(self,datacenterId,machineId): self.sequence = 0 self.laststmp = -1 self.sequence_bit = 12 self.mac..原创 2020-11-23 17:35:41 · 93 阅读 · 0 评论