June 29, 2022
用来测试 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
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
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
...
June 29, 2022
June 29, 2022
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 方法调用时,页面才会跳转
...
June 22, 2022
含义 # 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
June 22, 2022
什么是 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
定义 # 进程:操作系统对运行态的程序的抽象
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
定义 # 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