Blog

Agility6

Redis的数据结构

Tech

本篇文章主要介绍Redis数据类型,具体实现的数据结构 前言 🚀 内容来自参考自Redis设计与实现 ⚠️ 本篇文章主要介绍Redis3.0的数据结构,在Redis7.0数据类型与数据结构的关系有所不一致。 介绍逻辑 数据结构的定义 字段的解释 特性 介绍内容 简单动态字符串 链表 字典 跳跃表 整数集合 压缩列表 简单动态字符串 数据结构的定义 字段的解释 free属性的值,记录SDS存在多少未使用的空间 len属性,记录SDS保存多少字节长度的字符串 特性 常数复杂度获取字符串长度 杜绝缓冲区溢出问题,SDS在执行修改增加操作的时候,API会检查是否满足要求,如果不满足会自动扩容 减少修改字符串时带来的内存重分配次数,空间预分配会额外分配空间、惰性空间释放在缩短操作时,利用free属性记录数量,等待使用。 链表 数据结构的定义 由ListNode和L

二叉搜索树 🌲 🔍

Tech

BinarySearchTree定义 二叉搜索树是二叉树的一种。 任意一个节点的值都大于其左子树所有节点的值。 任意一个节点的值都小于其右子树所有节点的值。 它的左右子树也是一颗二叉搜索树。 设计一颗二叉树 树中节点的设计 节点的值 左孩子 右孩子 当前节点的父节点 判断当前节点是否为叶子节点 判断当前节点度是否为2 public class Node { public int element; // 值 public Node left; // 左孩子 public Node right; // 右孩子 public Node parent; // 父节点 /** * 必须传入当前节点的值以及父节点 * @param element * @param pare

2023总结🏃

Thought

主旋律:回想2023一整年应该都是备考 ➕ 实习以及匆忙的校园生活 一些 2023过年期间和朋友自驾游去了一趟广西桂林🙅(其实是陪朋友去找他女朋友)参观一些风景区没太多印象了,有意思的其实是和朋友一起在车上又冷又塞车通宵赶回家。 过完年就回学校备考了,和一位玩的很好的朋友约定每天三点一线的备考,每天约定俗成的在宿舍门口汇合,吃早餐...计划着要赶在学生下课之前去吃饭。 期间还在去图书馆的路上选一个棵树记录它能不能在考试前长出来🌲,很快就迎来了考试。 在第一门💥的情况下,也迎来了两天考试睡眠一共不足4个小时,而周一立马就去实习了毫无喘息... 实习😈 在备考期间学校恰好举行了招聘会,于是抽出半天时间想着能不能碰一碰运气,现在回想23届的校招可以说是地狱级难度(希望25届不要!)当时刷牛客的时候不少23届的同学都在抱怨。 然后在招聘会现场随便走了一圈,开发岗位少的可怜。抱着来

Trie树

Tech

Trie数可以快速的存储和查询字符串集合 用法 假设给定一组字符串abc,ab,bcf,abb,ab。最后需要去查找是否存在多少个ab字符串 使用Trie快速的存储给定的字符串 从根节点开始 遍历每个字符串,判断该节点上是否存在相同子节点 如果存在则继续,不存在则创建 将最后一个字符标记,用于表示当前字符有存在一个字符串 视图 最后查找存在多少个ab字符串,只需要取出b字符对应的个数就行了 代码实现 重要通过数组去模拟trie 主要要清楚son[][], cnt[], index变量的含义 N的大写取决于题目中最大的节点数,也就是最多有多少长度的字符串 26则是默认规定都是小写字母那么最多只有26个字母 son[][]son是存储当前节点的子节点的下标 🌰: son[0][1] = 2; 代表的是下标为0的节点,有子节点这个子节点为“1”(注意这

cs61b-sp21-project0-2048

Tech

project0实现一个2048游戏,大部分逻辑其实已经写好了,只需要把目光放在Model.java中主要的任务实现以下几个函数 emptySpaceExists maxTileExists atLeastOneMoveExists tilt 前三个较为简单这里就不多赘述,重点实现tile方法 Tile method实现 在写tile函数之前务必阅读文档,了解一下函数的用法以及作用 Border的tile move setViewingPerspective 完成以下检验是否真正的理解需求 Google Form quiz Google Form quiz 实现 根据Tips的提示,我们可以先从只考虑向上移动来进行分析。Border.tile(c, r)的行为是一列一列进行遍历的。 for (int c = 0; c < border.size(); c++) {