摘要:
概述 高性能的套接字编程围绕着两个方面:异步和复用。异步:高性能就是最大化计算机资源的利用,是不可能让线程有阻塞的,所以就有了各种异步模式。复用:计算机资源最好是能重复使用的,频繁的创建和销毁相同的对象也是对资源的浪费,所以就有了各种池和零拷贝;CPU在访问相邻资源的时候有特别的优势可以利用缓存区, 阅读全文
摘要:
概览 路由系统将URL和终结点Endpoint之间进行映射。首先在构建系统时,需要生成所有的映射;在请求来的时候,找到对应的终结点;然后执行对应的终结点,这样路由就由3部分构成: 终结点模型 选择终结点中间件 执行终结点中间件 为什么将选择和执行分为两个中间件,因为在选择好之后可以执行其他中间件,执 阅读全文
摘要:
概览 授权(Authentization):通过获取凭证中的基本信息,来判断用户能做什么,不能做什么。 授权也是通过中间件实现的,而且中间件注册时,授权只能放在认证的后面,因为认证其实是给用户颁发票据,其实就是context.user初始化,在授权将检查上一步颁发的票据中对应身份的声明,看是否由权限 阅读全文
摘要:
概览 认证(Authentication):用来给用户颁发一个凭证,其包含一个用户的基本信息,这个凭证可以由第三方机构(STS)颁发,也可以由自己颁发。 认证就涉及到两个模型:票据模型和认证模型。 票据模型抽象出用户凭证 认证模型通过中间件的方式给用户颁发凭证。 票据模型 模型概览 Claim:声明 阅读全文
摘要:
单词查找树 单词查找树是由链接的结点所组成的数据结构,这些链接可能为空,也可能指向其他结点。 每个结点都只可能有一个指向它的结点,称为它的父结点(只有一个结点除外,即根结点,没有任何结点指向根结点)。 每个结点都含有R 条链接, 其中R为字母表的大小。 单词查找树一般都含有大最的空链接,因此在绘制一 阅读全文
摘要:
字符串排序 第一类方法会从右到左检查键中的字符。这种方法一般被称为低位优先(LSD ) 的字符串排序。使用数字(digit) 代替字符(character ) 的原因要追溯到相同方法在各种数字类型中的应用。 第二类方法会从左到右检查键中的字符,首先查看的是最高位的字符。这些方法通常称为高位优先(MS 阅读全文
摘要:
加权有向图 找到从一个顶点到达另一个顶点的成本最小的路径。 在一幅加权有向图中,从顶点s 到顶点t 的最短路径是所有从s 到t 的路径中的权重最小者。 最短路径性质 路径是有向的, 权重不一定等价于距离 并不是所有顶点都是可达的 负权重会使问题更复杂 最短路径不一定是唯一的。 可能存在平行边和自环。 阅读全文
摘要:
加权无向图 最小生成树:一棵含有其所有顶点的无环连通子图,一幅加权无向图的最小生成树(MST)是它的一棵权值(树中所有边的权值之和)最小的生成时。 约定 只考虑连通图 边的权重不一定表示距离 边的权重可能是0或者负数 所有边的权重都各不相同 public class Edge : IComparab 阅读全文
摘要:
有向图 有向图:边是单向的,每条边所连接的两个顶点都是一个有序对。 定义:一幅有方向性的图(或有向图)是由一组顶点和一组由方向的边组成的,每条有方向的边都连接这有序的一对顶点。 出度:该顶点指出边的总数。 入度:指向该顶点边的总数。 头:有向边的第一个顶点 尾:有向边的第二个顶点 有向路径:一系列顶 阅读全文
摘要:
连通性问题 目标:编写一个程序来过滤序列中所有无意义的整数对 程序输入p,q,如果已知的所有整数都不能说明p,q是相连的,则将这对整数写到输出中,如果已知数据已经可以证明,则忽略。 将对象称为触电,将整数对称为连接。将等价类称为连通分量。简称分量 Quck-find算法 该算法的目标就是让所有连通的 阅读全文