数据库范式

2022-07-12

范式有哪些?

1NF 第一范式

属性(即表中字段)不能再被分割,也就是这个字段只能是一个值,不能再分为多个其他的字段了。
1NF 是所有关系型数据库的最基本要求,也就是说关系型数据库中创建的表一定满足第一范式。

2NF 第二范式

2NF 在 1NF 的基础上,消除了非主属性对于码的部分函数依赖。

3NF 第三范式

3NF 在 2NF 的基础上,消除了非主属性对于码的传递函数依赖。

点击阅读

进程、线程、协程的区别

2022-07-10

什么是进程?

进程是操作系统进行资源分配的基本单位,每个进程都有自己的独立内存空间。
由于进程比较重量,占据独立的内存,所以上下文进程间的切换开销(栈、寄存器、虚拟内存、文件句柄等)比较大,但相对比较稳定安全。

什么是线程?

线程又叫轻量级进程,是进程的一个实体,是处理器任务调度和执行的基本单位。
它是比进程更小的能独立运行的基本单位。
线程自己不拥有资源,但它可与同属一个进程的线程共享进程所拥有的全部资源。

点击阅读

Golang常见控制结构Mutex

2022-07-10

前言

互斥锁是并发程序中对共享资源进行访问控制的主要手段,对此 Go 语言提供了非常简单易用的 Mutex,Mutex 是一个结构体类型,对外暴露 Lock()Unlock() 两个方法分别用于加锁和解锁。

点击阅读

590. N 叉树的后序遍历

2022-07-10

题目

给定一个 n 叉树的根节点  root ,返回 其节点值的 **后序遍历 ** 。

n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

难度:🌟🌟

点击阅读

589. N 叉树的前序遍历

2022-07-10

题目

给定一个 n 叉树的根节点  root ,返回 其节点值的 前序遍历

n 叉树 在输入中按层序遍历进行序列化表示,每组子节点由空值 null 分隔(请参见示例)。

难度:🌟🌟

点击阅读

559. N 叉树的最大深度

2022-07-10

题目

给定一个 N 叉树,找到其最大深度。

最大深度是指从根节点到最远叶子节点的最长路径上的节点总数。

N 叉树输入按层序遍历序列化表示,每组子节点由空值分隔(请参见示例)。

难度:🌟🌟🌟

点击阅读

501. 二叉搜索树中的众数

2022-07-10

题目

给你一个含重复值的二叉搜索树(BST)的根节点 root ,找出并返回 BST 中的所有 众数(即,出现频率最高的元素)。

如果树中有不止一个众数,可以按 任意顺序 返回。

假定 BST 满足如下定义:

  • 结点左子树中所含节点的值 小于等于 当前节点的值
  • 结点右子树中所含节点的值 大于等于 当前节点的值
  • 左子树和右子树都是二叉搜索树

难度:🌟🌟

点击阅读

297. 二叉树的序列化与反序列化

2022-07-10

题目

序列化是将一个数据结构或者对象转换为连续的比特位的操作,进而可以将转换后的数据存储在一个文件或者内存中,同时也可以通过网络传输到另一个计算机环境,采取相反方式重构得到原数据。

请设计一个算法来实现二叉树的序列化与反序列化。这里不限定你的序列 / 反序列化算法执行逻辑,你只需要保证一个二叉树可以被序列化为一个字符串并且将这个字符串反序列化为原始的树结构。

难度:🌟🌟🌟🌟🌟

点击阅读

236. 二叉树的最近公共祖先

2022-07-09

题目

给定一个二叉树, 找到该树中两个指定节点的最近公共祖先。

百度百科中最近公共祖先的定义为:“对于有根树 T 的两个节点 p、q,最近公共祖先表示为一个节点 x,满足 x 是 p、q 的祖先且 x 的深度尽可能大(一个节点也可以是它自己的祖先)。”

难度:🌟🌟🌟

点击阅读

222. 完全二叉树的节点个数

2022-07-09

给你一棵 完全二叉树 的根节点 root ,求出该树的节点个数。

完全二叉树 的定义如下:在完全二叉树中,除了最底层节点可能没填满外,其余每层节点数都达到最大值,并且最下面一层的节点都集中在该层最左边的若干位置。若最底层为第 h 层,则该层包含 1~ 2h 个节点。

难度:🌟🌟

点击阅读