LYon's Blog

跨域相关问题 R

8月 21, 2021
HTTP, Frontend, Recommended, 计算机网络, 系统设计, 密码学

本文先从 CSRF 攻击的介绍开始,说明了跨域存在的问题,然后引入浏览器同源策略的概念,明白了要限制跨域的原因后,再给出了标准的跨域请求方案:CORS,所以总体上就三部分:CSRF、同源策略、CORS,文章有点长但不用慌,按顺序看就可以了。 跨站请求伪造(CSRF) # CSRF 跨站请求伪造(Cross-site request forgery, 通常缩写为 CSRF 或 XSRF),是一种挟制 … ...

了解下 MobX 概念

7月 19, 2021
React, Frontend, 系统设计

基本概念 # observable 函数 定义状态值 action 函数 用于修改状态值 接受一个函数,返回一个签名相同的函数,提供触发时调用。 derivations 派生,有两种:autorun 和 computed reactions - autorun() 接受一个函数 状态值发生改变后要执行的响应操作。 computed value - computed() 接受一个函数,返回计算值对 … ...

了解下 Redux 概念

6月 24, 2021
React, Frontend, 系统设计

Redux 用来进行复杂的状态管理,Redux 的思想继承自 Flux,并进行了更加简洁的抽象。 store store.dispatch(action) 是 View 发出 Action 的唯一方法,接受一个 Action 对象作为参数,将它发送出去。 store 允许使用 store.subscribe() 方法设置监听函数,一旦 State 发生变化,就自动执行这个函数。subscribe … ...

浏览器中的 HTTP 缓存使用策略

6月 12, 2021
HTTP, Frontend, 计算机网络, 系统设计, 浏览器

浏览器使用缓存数据有非常多的好处,很多情况下静态资源会比 js 代码更大,同时修改的频率又非常低,通过对静态资源使用缓存,可以有效减少重复请求,从而节省网络带宽、降低服务器的请求压力。 浏览器的缓存数据一般指的是通过 Get 方法向服务器发送请求获得的数据,其他方法不会缓存。浏览器如何使用这些缓存数据,有不一样的策略,一方面服务器指定了这些策略,同时浏览器在默认情况下也会有自己的做法,下面就开始详 … ...

前端的节流和防抖

5月 16, 2021
Frontend, 系统设计

工作中排查数据问题发现了前端按钮可能会触发两次点击的情况,这个问题除了要在后端做幂等以外,正好最近我也在做一些前端的工作,也就专门研究了下前端的解决方案。本来要解决的是防抖问题,但是查了些资料发现一般都是防抖和节流一起,它们解决方案相似但又不完全相同,下面就分别介绍下方便对比使用。 防抖(debounce) # 问题描述 # 防抖很容易理解,有时如果鼠标连按,那么在很短的时间内就会触发两次点击,从 … ...

操作系统的设备管理

4月 28, 2021
操作系统

计算机除了 CPU、内存、硬盘,还需要各种设备才能实现对计算机的操作。本文讨论计算机是如何管理设备的输入输出的。 设备控制器 # 设备控制器接收 CPU 发来的命令,去控制 I/O 设备工作,使 CPU 从繁杂缓慢的设备控制事务中解放出来。当 CPU 要操作 I/O 设备时,首先要启动这个设备,一方面将启动命令发送给设备控制器,另一方面通过地址线将 I/O 设备的地址发给设备控制器,设备控制器对收 … ...

操作系统的文件系统

4月 22, 2021
Linux, 操作系统

文件是操作系统进行存储时使用最多的抽象之一,在 Linux 中,一切皆文件。本文以 Linux 为例,介绍下文件系统中的基础概念。 数据结构 # 每个文件实质上是一个有名字的字符序列,序列的内容为文件数据(file data),而序列的长度、序列的修改时间等描述文件数据的属性等其他信息称为文件元数据(file metadata)。 块(block) # 通常来说,文件系统将文件数据保存在存储设备 … ...

“结点”还是“节点”?

4月 8, 2021
Algorithms, Life, 软件工程

“结点” 还是 “节点” ? # 刷题时,总会遇到“节点”和“结点”的词汇混用,非常困惑,查了一下,一般认为: 节点是一个实体,它具有处理的能力,比如网络上的一台计算机。 结点是一个交叉点、一个标记,算法中的点一般都称为结点,数据集合中的每一个数据元素都用中间标有元素值的方框来表示,我们称它为结点。 所以我们在看《算法导论》的时候,大部分是结点。在讨论服务架构的时候,一般就是节点了,英文里好像都 … ...

实现限流的几种方案

4月 4, 2021
Algorithms, 系统设计, Redis, Golang

限流是服务在高并发的情况下,通过限制处理请求的速率,以达到保证服务不过载的目的,实现高可用和稳定性的目标。限流的方案一般有计数法、滑动窗口、漏桶、令牌桶几种,其中各有各的特点,通常需要根据场景采用不同的方案。 计数法 # 相对于滑动窗口,计数法也叫固定窗口。就是说接口在固定时间内的访问次数不能超过多少个,在实现的时候,假设限流为每分钟 100 个请求,设置一个开始时间 start … ...

Go 程序是怎样跑起来的? R

3月 31, 2021
Recommended, Golang, 编译器

Go 程序是怎么跑起来的?面对问题我第一反应是,Go 是静态编译型语言,和 C 语言一样,就是编译、链接那一套,尤其是最近对着 Go 的一些资料看感觉又学习了一遍编译原理。编译原理的内容本身就很深,本文仅以我暂时理解到的视角进行总结,参考资料列在了最下面。 编译器总览 # 典型的编译器(Compiler)如 LLVM 分为编译器前端、优化器和编译器后端。其中,前端专注于词法分析、解析语法和语义分 … ...


© 2012 - 2025 YINDONGLIANG