base64 base64有些协议是文本协议,但是需要传输二进制数据。base64正是将二进制数据转换为可显示字符集的一种编码。思想标准ascii中127个字符,[0-31]和127是不可显式的字符。那么[32-126]这个区间,94个字符是可以显示的。base64只选用了其中的64个字符,为什么选用64个呢,这个算法实现是有关联的。字符肯定和数据是联系起来的,为了能表示64个字符,需要6位的二进制数据...
snowflake 文章目录snowflake原理优点缺点源码解读包变量解读节点生成一个节点生成ID关于作者snowflake这个算法是twitter开源的,作用是分布式下生成全局唯一的ID。原理Each time you generate an ID, it works, like this.A timestamp with millisecond precision is stored using 4...
trie 前缀树前缀树主要用于词频统计,一些补全也可以实现。特点根节点不包含字符,除根节点意外每个节点只包含一个字符。从根节点到某一个节点,路径上经过的字符连接起来,为该节点对应的字符串。每个节点的所有子节点包含的字符串不相同。结构type node struct { pass int end int child map[byte]*node}pass:节点添加的次数...
4-主引导程序 文章目录主引导程序加载位置显卡显卡如何控制显示器显存中的信息如何解释显存映射实验程序代码疑问实战操作关于作者主引导程序主引导程序的用处应该是通过一个中间程序加载操作系统或者直接加载操作系统,但此处只做学习,所以此处主引导程序的作用是打印一些文本内容。主引导区用来存储主引导程序,但是主引导区的大小只有512字节,难道主引导程序只有这么大?那就看看吧。位置:位于存储介质最开始处,大小512字...
Morris先序中序遍历 文章目录Morris先序中序遍历实现原理先序遍历中序遍历疑问总结关于作者Morris先序中序遍历这里把Morris实现先序中序遍历放在一起记录是因为先序和中序原理相同。这两者都和各自的递归版本有着很强的联系性。实现原理在上一节Morris遍历文章中,阐述了递归的本质。再来熟悉下:递归实现前中后序遍历二叉树的算法非常简单,但是深入探究背后,会发现三者其实是统一的。为什么这么说,这是因为三...
3-主引导区 文章目录主引导区硬盘原理主引导扇区关于作者主引导区主引导区通常是外存的前512字节,因为外存的前512字节存放主引导程序。硬盘相对于内存来说,一个相对的概念是外存,比如常见的软盘,硬盘,光盘,U盘等。这些外存的作用都是相同,这里着重讲解硬盘。原理硬盘可以只有一个盘片,也可以有多个盘片。每个盘片都有两个磁头,上面一个,下面一个。可以分为扇区,磁道和柱面。主引导扇区对于硬盘来...
2-BIOS 文章目录BIOS内存容量组成映射范围及用途计算机架构BIOS功能为什么BIOS是第一个运行的程序BIOS控制权转移总结关于作者BIOS内存无论什么汇编寻址都无外乎3中,立即数,寄存器和内存。最复杂的当属于内存。因为程序都是存储于内存中的,所以在将第一个运行的程序(BIOS)时先介绍内存。容量8086的内存有1MB的容量,但是这1MB分别映射到不同的器件上。组成内存由三部分组成:R...
1-段寄存器由来和策略 文章目录段寄存器问题解决思路解决方案段地址的要求为什么要整除16关于作者段寄存器在汇编的时候操作的都是物理地址,简单粗暴,却也带来了一些问题。问题在汇编程序结束后,如果发给他人使用,必须将程序加载到固定的内存位置,否则程序将出错。同时这样也使得多任务的运行更加困难。问题的根本原因在于程序无法重定位。解决思路8086提出了分段的策略,程序中使用偏移地址,间接的通过“段地址:偏移地址”确...
Morris遍历算法 文章目录Morris遍历概念步骤再论递归遍历Morris序分析后续关于作者Morris遍历二叉树有前中后序遍历,还有层次遍历,为什么还需要Morris遍历呢?考虑一下前中后序的遍历,这三种的空间复杂度总是逃不过O(h),h=height(root),层次遍历的空间复杂度也不可能达到O(1),恰巧Morris遍历就是空间复杂度为O(1)的遍历,而且时间复杂度依旧保持O(N)。概念对二叉树进...
搜索二叉树的判断 文章目录搜索二叉树的判断搜索二叉树思路1思路2关于作者搜索二叉树的判断比较常见的面试题。搜索二叉树概念不说了,相信各位同学都是知道的,不知道的Google一下。思路1起初看到这个题,本来想着直接找递归公式,递归的判断,尝试了一下。发现不行。把尝试的代码贴出来吧。func isValidBST(root *TreeNode) bool { return middleTranve...
完全二叉树的判断 文章目录完全二叉树的判断完全二叉树思路代码关于作者完全二叉树的判断各种二叉树的判断是经常出现的题目,这里给出的是完全二叉树的判断。完全二叉树第一次看到概念觉得很晦涩,但是结合图一下就知道是不是一棵完全二叉树。不知道的完全二叉树的同学先自行搜索相关概念。思路既然树的题目逃不过遍历,那么在四种遍历挑选一种同学们觉得哪种遍历能够解决问题,直觉告诉我就是层次遍历,不要说这是瞎扯,结合完全二叉树...
二叉树中的一个节点的后继节点 文章目录二叉树中的一个节点的后继节点题目方法普通方法进阶方法二叉树中的一个节点的后继节点这是第一次接触二叉树中后继节点这个概念,觉得很好玩就来看一看。所谓的后继节点就是中序遍历二叉树后这个节点后面的那个节点。题目二叉树的定义多了一个指向父节点的指针,根节点的父节点指针为空。struct node { int Value *node Left *node Right...
redis-intset 文章目录intset结构源码预备知识判断整数编码类型根据类型获得pos位置的元素设置函数查询函数升级函数移动函数添加函数移除函数总结关于作者intset整数集合,是有序存储的,且不包含重复的元素。结构typedef struct intset { uint32_t encoding; uint32_t length; int8_t contents[];} int...
redis-dict下 文章目录dict函数添加dictAdddictAddRow查找_dictKeyIndexdictAddOrFinddictFinddictFetchValue删除更改释放关于作者dict 终于到了哈希表的最后一篇了,终于又到了源码部分了。只要理解了前两篇的原理部分,那么源码解读其实就是把原理转换成代码的过程。也可以说是对我们阐述的原理的验证。废话不说,直接干。函数所有的数据结构都是围绕增...
redis-dict中 文章目录dict解决哈希冲突为什么出现哈希碰撞解决方法rehash为什么要rehash什么时候需要rehashredis的rehash渐进rehash使用两个哈希表定时rehash优化函数创建总结关于作者dict 今天是哈希表的中篇,花了很大的篇幅来描述哈希表,足以证明这个结构的重要性了。redis就是基于哈希的一个设计,而且如今的分布式都和哈希有着密切的关系。redis的数据结构部分结束后...
redis-dict上 文章目录哈希表哈希函数作用特点结构节点哈希表字典总结问题dictIteratorAPI创建类函数_dictResetdictCreatedictInit查找类操作dictFind增加类操作dictAddRawdictReplace关于作者哈希表花哨的算法比简单算法更容易出 bug、更难实现。尽量使用简单的算法配合简单的数据结构。只要掌握了数据结构中的四大法宝,就可以包打天下,他们是:arr...
redis-adlist 文章目录adlist1 数据结构1.1 节点的表示1.2 迭代单元1.3 链表2 宏解析3 函数3.1 创建3.1.1 listCreate3.2 增加3.2.1 头插法3.2.2 尾插法3.2.3 节点前后法3.3 删除3.3.1 删除单个节点3.3.2 删除所有节点3.4 更改3.4.1 旋转链表3.4.2 合并链表3.5 查询3.5.1 获取索引节点3.5.2 判断节点存在3.6 释放3.6...
ASCII-Unicode-UTF-8 文章目录字符编码ASCII标准ASCII扩展ASCIIUnicode目的UTF-8编码规则UTF-8演示特点关于作者字符编码ASCII标准ASCII一个字节的低7位存储数据,最高位用作奇偶检验位。扩展ASCII一个字节全部用来存储数据。UnicodeUnicode不是编码,而是字符集,字符集为每个“字符”都规定了一个码点(二进制的序列)。目的为了统一所有文字的编码。UTF-8...
回溯法 文章目录回溯思想适用范围经典解空间树子集树排列树关于作者回溯回溯的思想比较简单,但是却可以解决很多问题。思想回溯的思想是穷举所有可能的结果去尝试,如果走的通就继续前进,否则就退回重新选择。在穷举的过程中可以利用剪枝去过滤一部分不可能的结果。适用范围回溯法是穷举,那么必然会得到一个问题的全部解,进而又可以得到一个问题的最优解。这两点也正是回溯法的适用范围。这两种不同的情况又引出了两个属...
平衡二叉树的判断 文章目录平衡二叉树的判断开门题问题思路实现树的高度平衡性的判断关于作者平衡二叉树的判断二叉树是比较常见的树,而且树的平衡具有非常重要的特性。如果一颗搜索二叉树的平衡性不是很好,那么搜索的效率就不会很高了。开门题前几天考研,今年人大计科的编程题就是判断一棵树是否为平衡二叉树。所以就先拿这个题热热身。问题既然要判断一棵树是否为平衡二叉树,那么久需要先理解什么是平衡树。空树是一颗平衡树...