notes

orgmode 语法

June 29, 2022
emacs

用来测试 orgmode 转 markdown 经 hugo 渲染后的效果111 Table # 表头 表头 内容 e nglish 内容 你 cool 好了 end 我是 happy ending 我是中文 Math # If \(a^2=b\) and $ b=2 $, then the solution must be either \[ a=+\sqrt{2} \] or \[ a=-\sqrt{2} \]. \begin{equation} x=\sqrt{b} \end{equation} Test footnode # This is a content1 this is a footnote ↩︎ ...

浏览器任务调度

June 29, 2022
browser

requestAnimationFrame # 用于执行动画帧 既不是微任务,也不是宏任务,只是一个回调 优先级比 requestIdleCallback 高 requestAnimationFrame is a tool for us web-devs to hook in this update the rendering1 sub-process, allowing us to draw things only when the rendering will happen, but it also has the side effect of marking the web page as animated, and thus forces browser to execute the full update the rendering steps even though it might not have been needed 在渲染前,执行回调 requestIdleCallback # 注册低优先级的任务 ...

渲染

June 29, 2022
browser

Process Model # 浏览器的多进程模型 进程: Browser Process Controls “chrome” part of the application including address bar, bookmarks, back and forward buttons. Also handles the invisible, privileged parts of a web browser such as network requests and file access. 浏览器 ui 部分,地址栏,书签等;网络请求,文件访问等 Renderer Process 每个 tab 一个 renderer process,控制当前显示的 tab 内的一切 在沙盒中执行,避免安全隐患 GPU Process 处理 GPU 绘制人物 Plugin Process 控制当前页面使用的所有插件,例如 flash Utility Process ...

history

June 29, 2022
browser

API # class History { readonly length readonly state // 当跳转时,允许浏览器自动设置默认滚动恢复的行为 scrollRestoration: 'auto'|'manual' back() {} forward() {} go() {} /** * @param {object} state object 新 entry 的 state 对象,可被序列化,序列化后不超过 640 k * @param {string} title 文档标题,有兼容性问题,可直接设置为空字符串 * @param {string} 新的 entry url,可为相对值,必需跟当前 url 同源,否则会抛异常 * e.g. history.pushState({foo: 'foo'}, 'title', '?page=1') */ pushState() {} replaceState() {} } pushState 后当前页面并不会立马跳转至新的 url,仅当用户交互或 history 的 go/back/forward 方法调用时,页面才会跳转 ...

CSRF

June 22, 2022
security

含义 # csrf: 跨站请求伪造 (cross site request forgery),又称为 xsrf 攻击原理 # 表单提交场景下,在 evil.com 向 bank.com 提交表单,浏览器会携带 bank.com 的 cookie 过去 如果用户在 bank.com 已登录过且会话有效,则会提交成功 攻击者通常通过钓鱼邮件的方式攻击 如何预防 # xsrf token # bank.com 的页面里预埋 xsrf token,仅在当前页提交表单时会携带 token,从其他站点提交表单时,没有 token,则服务不信任 samesite cookie # 设置同站 cookie

Cookie

June 22, 2022
network, browser

什么是 cookie # 浏览器管理的一小段特殊字符串, http 协议的一部分,在 RFC 6265 里有说明 设置 Cookie # 服务端通过 http Set-Cookie 响应头 js 通过 document.cookie 设置(非 httpOnly 的) document.cookie # accessor (getter/setter), 访问器属性 写的操作非全量覆盖,仅修改对应的字段,写的时候需要 encodeURIComponent ,(name, value 都要) 读的操作不展示 domain , path 等信息 xhr 跨域 1 # 跨域的 xhr 请求只有带上 withCredentials:true 时,xhr 响应才能写 cookie ,否则会被忽略 fetch 跨域 # 参数带上 credentials: include Cookie 参数 # 例如: document.cookie = "user=John; path=/; expires=Tue, 19 Jan 2038 03:14:07 GMT; domain=. ...

进程

June 20, 2022
os

定义 # 进程:操作系统对运行态的程序的抽象 Machine State # 进程的机器状态 包括:内存地址空间,寄存器,program counter, stack pointer, frame pointer, i/o 文件描述符等 地址空间 # 进程能访问到的内存地址 Program counter: # 程序计数器,指令指针 (instruction pointer),指向正在执行中的指令 Time sharing # 分时共享:A 用一会儿,B 用一会儿 Space sharing # 空间共享:例如磁盘空间,A,B 文件占用的是不同的存储块

矩阵

June 18, 2022
math

定义 # m 行 n 列的矩阵称为 \(m \times n\) 矩阵,\(m = n\) 时,称为方阵 在离散数学里,常用来表示集合里元素的关系 矩阵加法 # 若 \(A = [a_{ij}],B = [b_{ij}]\) 均为 \(m \times n\) 矩阵,则 \(A + B = [a_{ij} + b_{ij}]\) 矩阵乘法 # 设 \(\textbf A = [a_{ij}]\) 为 \(m \times n\) 矩阵,\( \textbf B = [b_{ij}]\) 为 \( n \times k\) 矩阵,则 \(AB = C = [c_{ij}]\) 为 \(m \times k\) 矩阵 \[c_{ij}=a_{i1} \cdot b_{1j} + a_{i2} \cdot b_{2j} + … + a_{ik} \cdot b_{kj} \]

算法分析

June 18, 2022

Algorithm analysis # 算法分析方法1