数据库的锁R
数据库里的锁根据范围和维度都有不同的实现和叫法,如果我这样列出来你可能会很焦虑:GAP 锁,记录锁,显式锁定,表级锁,行级锁,页级锁,咨询锁,间隙锁,共享锁,排他锁,互斥锁,自旋锁,读写锁,悲观锁,乐观锁,因为当初我也是这种感觉,现在我重新整理一遍,希望对你也有帮助。 锁是一种并发控制手段,相对的还有其他的并发控制手段比如:MVCC(多版本并发控制),这个以后再说。 悲观锁(Pessimistic …
交替打印 1-100 之间的奇数和偶数
题目:两个 goroutine 交替打印1-100之间的奇数和偶数。 方法一 利用非缓冲 channel 的阻塞。 go package main import ( "fmt" "sync" ) func main() { ch := make(chan struct{}) var wg sync.WaitGroup wg.Add(2) go func() { defer wg.Done() fo …
推荐下双拼输入法
问题 最近打字聊天的工作比较多,发现我在拼类似【能不能】这种词语的时候经常打错成类似 negnbuneng 或者 nengnbuneng (见下图)这种有需要在两个字母之间来回切换的,还有就是 ang 、 eng 、 ong 、 iong 、 uang 这种拼音,非常不值得敲那么多遍。 那么我要解决的就是这种问题,减少每个字敲键盘的次数,同时也并不需要立刻全部采用双拼,只要像这种通过 ng 就能打 …
JS 加号运算符的运用
一元运算符 语法: + Expression 说明: + 号运算符作为一元运算符时,Expression将进行 ToNumber 操作。 argument类型 返回值 Undefined return NaN Null return +0 Boolean true return 1; false return 0; Number return value String 若字符串为纯数字时返回转换后 …
JS 非空判断
在 js 中,有一个富有哲学意味的问题:「什么是空」?先看下面代码: js function main(a) { if (!a) { console.log("空"); } else { console.log("非空"); } } main(0); main(null); main(); main("") main(undefined) main(NaN) // 以上全是“空” 上面这些好像很好 …
跨域相关问题R
本文先从 CSRF 攻击的介绍开始,说明了跨域存在的问题,然后引入浏览器 同源策略 的概念,明白了要限制跨域的原因后,再给出了标准的跨域请求方案: CORS ,所以总体上就三部分:CSRF、同源策略、CORS,文章有点长但不用慌,按顺序看就可以了。 跨站请求伪造(CSRF) CSRF 跨站请求伪造(Cross-site request forgery, 通常缩写为 CSRF 或 XSRF),是一种 …
了解下 MobX 概念
基本概念 observable 函数 定义状态值 action 函数 用于修改状态值 接受一个函数,返回一个签名相同的函数,提供触发时调用。 derivations 派生,有两种: autorun 和 computed reactions - autorun() 接受一个函数 状态值发生改变后要执行的响应操作。 computed value - computed() 接受一个函数,返回计算值对象。 …
了解下 Redux 概念
Redux 用来进行复杂的状态管理,Redux 的思想继承自 Flux,并进行了更加简洁的抽象。 store store.dispatch(action) 是 View 发出 Action 的唯一方法,接受一个 Action 对象作为参数,将它发送出去。 store 允许使用 store.subscribe() 方法设置监听函数,一旦 State 发生变化,就自动执行这个函数。subscribe …
浏览器中的 HTTP 缓存使用策略
浏览器使用缓存数据有非常多的好处,很多情况下静态资源会比 js 代码更大,同时修改的频率又非常低,通过对静态资源使用缓存,可以有效减少重复请求,从而节省网络带宽、降低服务器的请求压力。 浏览器的缓存数据一般指的是通过 Get 方法向服务器发送请求获得的数据,其他方法不会缓存。浏览器如何使用这些缓存数据,有不一样的策略,一方面服务器指定了这些策略,同时浏览器在默认情况下也会有自己的做法,下面就开始详 …
基础概念Doc
JSX className props 组件无论是使用函数声明还是通过 class 声明,都决不能修改自身的 props。所有 React 组件都必须像纯函数一样保护它们的 props 不被更改。 建议从组件本身的角度来命名 props 而不是它被使用的上下文环境。 纯函数 不会尝试更改入参,且多次调用下 相同的入参始终返回相同的结果 。 不会触发事件 state this.setState() …