本月电脑算是被我彻彻底底弄坏了,这回看来是真得没办法好好学习了(无奈脸)。虽然自己这个月看的大部分都是前端知识,比如HTML与CSS相关的,但这个月的博客主题并不是与前端有关。

这个月倒是没什么具体的打算。虽然距离18岁生日也就剩下两三个月了,然而整个人依然是比较迷糊的状态(个人觉得我自己的心态更像是以第三人称来看待自己)。不过我自己打算从明年下半年才开始接触机器学习(原因如上)。另外实现我自己的几个小的SideProject(主要是一门叫做CKS的脚本语言及其解释器cks32)。

在之前折腾Aria2下载器(别问我为什么折腾这玩意)时接触到了YAAW,然后魔改YAAW期间学习了部分前端知识(大部分是CSS)。只能说前端的CSS自适应真的非常恶心(主要是讨厌改别人的模板)!媒体查询写到内心崩溃……以至于干脆最后我在修改页面时直接使用了JS调整页面(嫌弃脸)……

不过最近的commit里还是没有解决页面的一些小问题。诸如页面发生改变时(resize事件)自动调整高度去适应,但在resize事件上绑定遇到了一些问题(肯定是框架的锅!)。但考虑到因为YAAW默认的框架是2012年的bootstrap v2,能改成现在这样我自己也很满(xian)意(qi)了。

言归正传,本月的博客倒不是和前端有关的 ,依然是与后端数据结构方面的。今天我们来了解一下数据结构中高级语言中比较常用的映射数据类型散列表(哈希表)。不过在此之前我们需要先了解两个常用数据结构:数组与链表。

数组连续的相同类型,预分配空间数据结构。
列表非连续(首尾相连)的相同类型,动态分配空间数据结构。

如上面所述的,数组和链表都是以相同类型的元素组成的数据结构。

列表和数组也各自都有自己的优缺点。如因为数组是固定分配定的内存空间,且并非首尾相连,所以不能实现高效的插入数据;而链表因为是动态的首尾相连结构则能够轻松得实现较为高效的插入数据;但在你需要处理相同的连续数据,如处理字符串时如果继续使用链表的话那么可能会造成程序寻址性能低下,反之亦然。

而哈希表则是介于两者之间的一种数据结构。之前我的博客里已经介绍过了哈希是摘要算法用于生成(相对)唯一的数字签名,而哈希表则是用到了这一点,并以此生成数组下标。即当给定一个键会返回对应的下标,表示为HashTable(Key) -> Index。在HashTable中我们需要对键生成的值再进行诸如取余等操作使得其范围可控性。但这样做还有一个问题,因为是进行取余,所以很大几率上我们会遇到相同下标的情况。对于这个问题较好的解决方法是在重复的元素下使用链表结构扩充。当然目前还有很多好的散列算法,比如“斐波那契散列法”……

优点

缺点

参考与引用: https://blog.csdn.net/duan19920101/article/details/51579136