分类:: 算法

0

URL缩短原理与实现

一直在使用URL缩短的技术,但是一直没有时间来琢磨这背后的技术原理是什么,今天给大伙儿聊聊URL缩短技术的原理和实现细节。 短网址是什么?还记得http://t.cn/RTwgi8这样的网址么?没错,我们每次打开新浪微博的时候只要是链接,基本上都是这样一种形式。简单点来说,短网址就是长度比较短的网址。从另一种角度上来讲,短网址的确产生了巨大的价值。以微博为例,微博一般限制字数为140字,如果你粘

0

Twitter-Snowflake,64位自增ID算法详解

Twitter-Snowflake算法产生的背景相当简单,为了满足Twitter每秒上万条消息的请求,每条消息都必须分配一条唯一的id,这些id还需要一些大致的顺序(方便客户端排序),并且在分布式系统中不同机器产生的id必须不同。 Snowflake算法核心把时间戳,工作机器id,序列号组合在一起。 除了最高位bit标记为不可用以外,其余三组bit占位均可浮动,看具体的业务需求而定。默认情况下4

0

基于双向链接表和HashMap实现的LRU缓存

一直在做关于缓存方面的研究,今天终于用非LinkedHashMap的方式将其实现了,Mark一下! 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798

0

DoubleLinkedList独立实现

精彩继续,实现完SingleLinkedList之后,今天又实现了双向链接表,代码如下: 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818

0

SingleLinkedList独立实现

现在对Java原生数据结构特感兴趣,于是决定自己动手实现一些类,比如这个List类,在熟习了单链表和双链表的数据结构之后,终于实现了,代码如下: 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676

0

LinkedList实现基于LRU算法的缓存

学过操作系统的人都知道LRU页面切换算法,其实这个算法不仅仅只是能在页面切换中应用到,在缓存中也有很实际的应用。最典型的实现方式是采用LinkedHashMap来实现这个缓存,大家可以在Java源码里面看到这个类的作者关于这个的描述,不过全是英文,但是却明确提到过。 下面废话不多说,直接展示我自己关于这个算法实现的代码吧,亲测通过: 核心算法代码: 12345678910111213141516

0

BinarySearchTree查找二叉树独立实现

先看看实现了哪些功能吧?(1)构造二叉树 (2)遍历二叉树结点 (3)搜索二叉树结点 (4)删除二叉树结点 (5)判断结点是否存在二叉树 上代码12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686