backend

OAuth

September 27, 2022
backend

OAuth # Role # Client # 需要获取用户权限的的三方应用,需要用户授权(主动授权,隐式静默授权) Resource server # 获取用户信息的 api 服务 鉴权服务 # 用于用户鉴权,通常跟 resource server 一起,也可独立拆开做鉴权服务 Resource owner # 用户,资源所有者 应用创建 # Redirect URI # Client ID # Client Secret # 需保密,不能暴露给端 Authorization # 获取用户授权 authorization code # 授权码, 通常用于 web server apps 的授权, 因为 client_secret 在服务端使用,是安全的 PKCE # proof key for code exchange,通常用于单页应用 single page apps, 纯 js 应用 ...

计算机架构

June 10, 2022
backend

硬件设计理念 # 并不绝对,都是权衡(trade-off) 越小越快 时钟周期 # CPU 时钟一个周期的时间 Register # 寄存器 在 RISC-V 架构里,一个寄存器的大小是 64 bit,64 bit 又称为 双字 ,32 bit 称为 字 ,通常只有 32 个寄存器 寄存器数量过多会增加时钟周期(电子信号走的远就更耗时) 1 Byte = 8 bits Procedure # 程序 x10-x17,8个参数寄存器,用来传参和返回值 x1,返回地址寄存器 执行过程 # 把参数放到程序能访问到的地方 控制权转移给待执行程序 分配程序执行需要的存储空间 程序执行 把返回值放在调用者能访问到的地方 转移控制权给调用方 返回地址 # 程序执行完后需要返回到的 调用方 的地址

头文件

June 6, 2022
backend

头文件 # 用于将函数,变量声明放在同一个文件里,便于被其他文件引用 仅包含声明,不包含定义,定义在 linker 阶段链接到程序里 如下图 #include "something.h" /*当前目录下找*/ #include <iostream> /*在系统环境里找, include directory*/

C 预处理器

June 5, 2022
backend

预处理 # C: C 或 C++ 程序编译前的转换过程,不修改源文件,仅在内存中完成转换 preprocessor 不理解 C 的语法 指令在编译前被解析 参考 预处理指令 # 以 #symbol 开头(symbol为指令字符),以换行符结尾; 常用指令 指令 含义 #include 引入头文件 #define 宏定义 #ifdef, #ifndef, #endif. 条件编译指令 #if 0 不编译某些代码块 Object-like Macros # 类对象宏 #define PRINT_JOE /* 用于条件编译 */#define MY_NAME "Alex" /* 用于常量定义, 老代码里用到 */