Blog is A Room

Welcome to Nicodechal's Blog

[CSS 2.2 中文] 可视化格式模型 - Visual Formatting Model

CSS 标准翻译

LINK 可视化格式模型 ( Visual Formatting Model ) 序言 这一章 (第九章) 和下一章将描述可视化格式模型 ( visual formatting model ),即用户代理 ( user agents ) 如何为可视媒体 ( visual media ) 处理文档树 ( document tree )。 在可视化格式模型中,文档树中的每个元素都会根据盒子模型......

寻找连通图中的桥

算法学习笔记

从概念上讲,连通图,就是任意两点都连通的无向图,连通,就是指两个点有路径相连。而桥,简单来讲就是图上的一条边,如果去掉这条边,原图就不再是连通图。本文考虑如何找出所有的这样的边。 算法思路 这里使用的方法思路来源于 Tarjan 算法,该算法用于求有向图中的强连通分量,这里借用其思路来寻找无向图中的桥。 该算法的基本思路是, 首先对图进行一次 DFS 搜索,并对节点按照遍历到的顺序进行编......

环路检测的 DFS 算法

算法学习笔记

传统的 DFS 算法比较简单,这里考虑可以进行环路检测的 DFS 算法, 该算法也称为 “White-Gray-Black” DFS。 算法思路 对于访问的节点,相比于以往使用 visited 数组记录一个点是否访问,这里使用一个 color 数组,将状态分为三种: WHITE: 节点还未访问 GRAY: 节点正在被访问 BLACK: 节点已经访问 可以看到,节点正在访问的情况也被记录......

跳表 ( Skiplist ) 的数据结构实现

数据结构的学习与实现

序 最近看 Redis 的相关书籍时,提到 Redis 中的有序集合是使用跳表 ( Skiplist ) 这种数据结构实现的。Skiplist 可以的实现在 O(logn)O(logn)O(logn) 内完成数据的添加,查询和删除。从复杂度上看,跳表和红黑树的性能相当,但跳表相比于红黑树更易实现。 关于跳表的相关概念这里不再赘述,直接考虑如何使用代码实现。本文使用 C++ 对跳表进行实现。......

拓扑排序的应用

这是一篇关于拓扑排序的总结,以 LeetCode.1203 为例 例子的问题不再复述,总的来说,就是需要进行两次拓扑排序,第一次对组内的元素进行排序,第二次对组之间进行排序。 拓扑排序的大概过程: 取出所有入度为 0 的点放入队列 qqq. 取出一个点 ttt,将其加入结果 ansansans 数组中,并遍历其出边指向的点集 SSS. 对于每个点 sis_is​i​​ ,入度减 1,如......

欧拉回路的判定和求解

算法学习笔记

本文考虑无向图下的欧拉回路,基于 Leetcode.753 对应的一个例子进行解释 欧拉回路的判定 一个图上的 欧拉回路 指一条首尾相连的路径,该路径经过图上每条边,且只经过每条边一次。 一个图如果有欧拉回路,必需满足: 每个顶点的度为偶数 ( 每个顶点的边有偶数条 )。 欧拉回路的求解 深度优先搜索 ( DFS ) 确定一个图有欧拉回路后,取一个顶点开始进行 DFS,搜索时,......

Iptables 命令学习总结

网络相关工具学习

介绍 iptables 是 Linux 下的常用网络工具,可以用于对网络数据包的过滤、修改和管理。 基本概念 链的概念 链是 iptables 中的基本组成,每个链上都包含着一系列用于控制数据包的规则: 每个链在数据包流转的不同环节中发挥作用,流转图和链的关系如下: 图中红色的代表的是 iptables 中的规则链。 表的概念 表是我们操作这些链的接口,每个链上的规则都被分到不同......

[CSS 标准学习] 视觉格式化模型 - Visual Formatting Model

CSS 标准学习笔记(一)

本文基于 CSS 2.2 标准文档中视觉格式化模型 Normal Flow 小结进行整理。 标准中这一部分主要描述用户代理 ( User Agent ) 如何为可视媒介 (Visual Media) 处理文档树。在视觉格式化模型中,文档中的每个节点都会根据盒子模型 ( Box Model ) 生成零个或多个盒子。这些盒子根据下面条件进行布局: 盒子的尺寸和类型。 定位方式 ( 常规流、......
CSS

SHA-3 算法计算过程总结

哈希算法过程分析

哈希算法是信息安全领域重要的组成部分,主要包括: 生成和验证数字签名 密钥导出 (key derivation) 伪随机位生成 (pseudorandom bit generation) SHA-3 算法是第三代标准的哈希函数,基于 Keccak 算法实现。与之前的哈希算法有所不同,SHA-3 算法是基于置换 ( permutation-based ) 的加密函数。本文主要介绍 SHA-......

Ethereum 中的 MPT ( Merkle Patricia Tree )(二)

Ethereum 学习笔记

概述 本文主要介绍以太坊中的 Merkle Patricia Tree。 Merkle Patricia Tree (MPT),顾名思义,同时具有基数树和哈希树的特点。一方面,MPT 能够像基数树一样进行键值对的存储和高效的索引,另一方面,其还具备哈希树的数据验证能力。 考虑上篇中提到的哈希树,可以认为是将哈希算法结合到二叉树中,即将二叉树中的子节点指针使用哈希指针代替。MPT 则可以认为......