iptables和netfilter

关于二者的关系:

凤凰架构–干预网络通信

(iptables)常被称为是 Linux 系统“自带的防火墙”,然而 iptables 实际能做的事情已远远超出防火墙的范畴,严谨地讲,比较贴切的定位应是能够代替 Netfilter 多数常规功能的 IP 包过滤工具。iptables 的设计意图是因为 Netfilter 的钩子回调虽然很强大,但毕竟要通过程序编码才能够使用,并不适合系统管理员用来日常运维,而它的价值便是以配置去实现原本用 Netfilter 编码才能做到的事情。iptables 先把用户常用的管理意图总结成具体的行为预先准备好,然后在满足条件时自动激活行为

leetcode-432 全 O(1) 的数据结构

https://leetcode.cn/problems/all-oone-data-structure/description/

为了满足 O(1) 平均时间复杂度的要求,我们需要巧妙地设计数据结构。这个设计需要快速增加和减少计数、快速访问最大和最小计数的字符串。一个有效的方法是使用两个哈希表和一个双向链表:

  1. 哈希表1 (keyCountMap): 存储键和其对应的计数值。
  2. 哈希表2 (countKeysMap): 存储计数值到包含该计数所有键的集合的映射。这里可以使用集合来存储具有相同计数的所有键,以便快速访问和修改。
  3. 双向链表: 存储所有不同的计数值,链表中的每个节点代表一个不同的计数值,节点按计数值排序。每个节点还需要有指向对应计数值的所有键的集合的链接(这可以通过 countKeysMap 实现)。

git reflog命令

git reflog 是 Git 中的一个非常强大的命令,用于记录某个引用(如分支)的更新历史。每当 HEAD 指针的指向发生变化时(例如通过提交、重置、检出等操作),这个变化就会被记录在 reflog 中。这使得 git reflog 成为了一个非常有用的工具,用于查看你的 Git 历史,并且可以帮助你恢复到之前的状态,即使这些状态在当前的分支历史中不再可见。

作用

  • 历史审查:查看 HEAD 指针和分支引用在过去的移动,这对于了解项目的历史变化很有帮助。
  • 撤销操作:找回丢失的提交,比如在不正确的分支上做了提交,或者错误地执行了一些 Git 命令。
  • 故障排除:帮助理解和修复因误用 Git 命令导致的问题。

Shell的pushed和popd命令


在Linux中,pushdpopd命令用于与目录栈(directory stack)交互,它们是bash shell的内置命令,用于在多个目录之间高效地导航。

pushd 命令

McCabe度量法

概论:


McCabe度量法是由 托马斯·麦克凯 提出的一种基于程序控制流的复杂性度量方法。又称环路度量,循环复杂度(Cyclomatic complexity), 也称为条件复杂度或圈复杂度,是一种软件度量。它认为程序的复杂性很大程度上取决于程序图的复杂性。单一的顺序结构最为简单,循环和选择所构成的环路越多,程序就越复杂。