Halt in Air

Lay burdens down and travel light!

WikiText 初识

注:本文代码中{前的\需要移除。 1. 概念 与 markdown 类似,WikiText 也是一种轻便的文本标记语言,但是更专注于链接和交互的特性。 2. 语法 2.1 段落 与 md 相同,单换行符将被忽略,双换行符表明段落的结束。 特别的,被"""引起来的与块中,单换行符可以起到预期效果。 2.2 引文 2.2.1 单行引文 格式与 md 类似,同时支持嵌套使用: &...

在VPS上运行TiddlyWiki

是搭建个人云端笔记服务的一次尝试。 1. TiddyWiki 安装 官网提供了详细教程,单机使用只要下载一个空的网页副本就可以了。对于存储,官网同样提供了多种方案,本例选择通过 Node.js 部署 tw 在 VPS 上。 安装 Node.js 可以直接从 http://nodejs.org 下载安装,或通过包管理器安装,如在 Debian/Ubuntu 系统...

位移操作与补齐

问题描述 解码操作时,需要从buffer某处获取一个 2 字节的长度,结果得到一个非预期值。源码如下: #define READ_SHORT(p) ((p[0] << 8) | p[1]) int main () { char buffer[2] = {0x80, 0x81}; char *p = buffer; in len = READ_SH...

CoAP 协议分析

1. 概述 CoAP(Constrained Application Protocol)是为类似智能家居、楼宇自动化等 M2M 应用设计,专门用于受限节点之间的通信网络传输协议。 与 HTTP 相类似,CoAP 为应用端点提供了一套请求/响应的交互模型,旨在满足受限环境特定需求(如多播、低开销等)的条件下,轻松达成与 HTTP 交互,集成入 WEB 网络中的目的。 2. 消息格式 2...

dpdk报文转发算法

除了良好的转发框架外,转发中很重要的一部分内容就是对报文字段的匹配和识别。DPDK 中主要用到了精确匹配(Exact Match)算法和最长前缀匹配(Longest Prefix Matching, LPM)算法来进行报文的匹配从而获得相应的信息。 1. 精确匹配算法 核心思想就是利用哈希算法对所要匹配的值进行哈希,从而加快查找速度。 决定哈希性能的主要参数是负载参数 $L=\frac...

数据包处理性能中的几个概念

在以太网中,一般所说的接口带宽,1Gbit/s、10Gbit/s、40Gbit/s等,代表以太网接口线路上所能承载的最高传输比特率。 实际上,不可能每个比特都传输有效数据。以太网每个帧之间会有帧间距(Inter-Packet Gap, IPG),默认帧间距大小为 12 字节。每个帧还有 7 个子节的前导(Preamble),和 1 个字节的帧首定界符(Start Frame Delimit...

单调栈和单调队列

monotone stack/queue

1. 单调栈 1.1 概述 单调栈是指一个栈内部的元素具有严格单调性的一种数据结构,分为单调递增栈和单调递减栈,具有如下性质: 满足栈的后进先出特性 从栈顶到栈底的元素具有严格的单调性 对于单调递增栈,若当前进栈元素为 e,从栈顶开始遍历元素,把小于(或等于) e 的元素弹出栈,直到遇到一个大于 e 的元素或者栈为空为止,然后再把 e 压入栈中。类似的,对于单调递减栈,则每...

字典树

basic knowledge of trie tree

做题用到字典树,整理记录一下备忘。 1 Trie Trie 别称字典树、前缀树,是一种用于存储动态集合、关联序列的有序数数据结构,其关键字通常是字符串。 一棵 Trie 的示例: 它有3个基本性质: 根节点不包含字符,除根节点外每一个节点都只包含一个字符 从根节点到某一节点,路径上经过的字符连接起来,为该节点对应的字符串 每个节点的所有子节点包含的字符都不相同 ...

mmap 基础

1. 背景 在优化一个文本处理工具,处理线程的增多,并不能线性增加总体处理速度。使用 vtune 分析函数时间占用,发现读文件线程的 fgets 占比很高。考虑对这一过程进行优化。 2. 概述 系统调用 read() 从读取文件时,首先在地址空间查找要请求的文件页是否已经缓存在页缓存中,如果不存在则通过文件索引节点定位到文件磁盘地址,将数据从磁盘复制到页缓存中。页缓存处于内核空间,不能...