一、localStorage简介: 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie...二、localStorage的优势与局限: 优势: 1、localStorage拓展了cookie的4K限制 2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库...,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的 局限: 1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性 2、目前所有的浏览器中都会把...=storage.getItem('a') alert("修改之后的a:"+after) } else { alert("浏览器不支持localStrorage") } <...a" storage['b']=100 storage.setItem('c',"我是c") alert("删除前的a:"+storage.getItem('a')) storage.clear
一、localStorage简介: 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题(cookie中每条cookie...二、localStorage的优势与局限: 优势: 1、localStorage拓展了cookie的4K限制 2、localStorage会可以将第一次请求的数据直接存储到本地,这个相当于一个5M大小的针对于前端页面的数据库...,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的 局限: 1、浏览器的大小不统一,并且在IE8以上的IE版本才支持localStorage这个属性 2、目前所有的浏览器中都会把...('a',"a被修改了") var after=storage.getItem('a') alert("修改之后的a:"+after)...a" storage['b']=100 storage.setItem('c',"我是c") alert("删除前的a:"+storage.getItem
我们所说的H5的存储方案指的是客户端的数据存储,这点需要明白,那么在这个之前有么有可用的存储方案呢?...当然是有的,之前一直用的CooKie,如果有人看过我之前写的关于客户端存储的文章, 这里就很好理解了,我之前说过cookie的弊端和优势。...我在之前也具体的写过例子:localstore例子,今天简单的再写一下,用官方的例子就行: 有以下的几种方法: ①clear():删除所有值。 ②getItem(name):根据指定的名字name获取对应的值 ③key(index):在指定的数字位置获取该位置的名字。...sessionStorage操作限制在单个标签页中,在此标签页进行同源页面访问都可以共享sessionStorage数据。 3) 只在本地存储。
一、什么是localStorage、sessionStorage 在HTML5中,新加入了一个localStorage特性,这个特性主要是用来作为本地存储来使用的,解决了cookie存储空间不足的问题...二、localStorage的优势与局限 localStorage的优势 1、localStorage拓展了cookie的4K限制 2、localStorage会可以将第一次请求的数据直接存储到本地...,这个相当于一个5M大小的针对于前端页面的数据库,相比于cookie可以节约带宽,但是这个却是只有在高版本的浏览器中才支持的 localStorage的局限 1、浏览器的大小不统一,并且在IE8以上的...return false; }else{ //主逻辑业务 } localStorage的写入,localStorage的写入有三种方法...JSON.stringify(data); storage.setItem("data",d); console.log(storage.data); } 读取之后要将
朋友在面试的时候,他们让我的朋友当场写代码来实现4个复杂方法的功能。 1....当所有输入的 Promise 都已解决,或者输入的可迭代对象不包含 Promise 时,返回的 Promise 将得到解决。...('name') // front-end-fat-head // 100s later storage.getItem('name') // null storage.setItem('obj', {...,如果还不明白的话,那就是我还没有说清楚,下次,我争取说的更加清楚一些。...当然,如果你觉得这个内容对你有帮助的话,请记得点赞我,关注我,以便学习更多内容。
浏览器的本地存储技术 除了最早的使用cookie来进行本地存储之外,现代浏览器使用Web Storage API来方便的进行key/value的存储。...我可以通过设置过期时间,使用javascript手动删除或者清楚浏览器缓存来清除localStorage。...awesomeness } else { // Too bad, no localStorage for us } 隐身模式 大多数现代浏览器都支持一种隐身模式,在这种模式下,将不会存储浏览历史记录和...也有些浏览器会选择在浏览器关闭的时候清空之前的所有存储。 所以,我们在开发的过程中,一定要注意不同浏览器的不同处理方式。...注意Storage对象中的key value都是string类型的,即使你输入的是integer,也会被转换成为String。
下面我逐一为你解释: 读未提交:一个事务还没提交时,它做的变更就能被别的事务看到。 读提交:一个事务提交之后,它做的变更才会被其他事务看到。...在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。...假设一个值从 1 被按顺序改成了 2、3、4,在回滚日志里面就会有类似下面的记录。 ? 当前值是 4,但是在查询这条记录的时候,不同时刻启动的事务会有不同的 read-view。...如图中看到的,在视图 A、B、C 里面,这一个记录的值分别是 1、2、4,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。...在 MySQL 5.5 及以前的版本,回滚日志是跟数据字典一起放在 ibdata 文件里的,即使长事务最终提交,回滚段被清理,文件也不会变小。我见过数据只有 20GB,而回滚段有 200GB 的库。
假设现在有一个本地局域网的仓库,然后我想要添加一个github的远程地址,但是我只希望我release的版本发布到github上。...只是在push的时候小心,不要把代码推到不该推的仓库就可以了。 发布的时候只保留一个commit记录 一般代码合并的时候都是使用merge直接合并。...但是merge有个问题就是会把详细的提交记录合并过去。对于一些项目发布,在发布版本上其实不需要记录过多的开发细节。只需记录发布日志信息。这个时候就需要merge --squash了。...merge之后分支情况: ? merge--squash之后分支情况: ? 保持分支干净rebase 如果你有强迫症,每次看到各个分支之间的连接网络就抓狂,不想看到下面的场景: ?...这里还是使用到rebase 比如上面的提交记录,我需要合并'fix1','fix2','fix3','fix5'到一个commit 'fix error before online'里面 首先找到fix1
如果有两个线程同时在查询同一个键值,第一个得到字典锁的线程将会完成对象的创建工作,另一个线程会等待这个创建的完成,并在得到字典锁之后获取到已创建的键值结果。 这样挺好的,不是吗? 真不是!...我认为像这种在并行方式下创建对象,最后只有一个被使用的情况不会产生我所描述的问题。 我想阐述的情况和问题可能并不总是能复现,在并行环境中,我们可以简单的创建两个对象,然后丢弃一个。...虽然 ConcurrentDictionary 中的 Node 分配要慢些,我也没有尝试将 1 亿个数据项放入其中来测试时间。因为那显然很花费时间。 但大部分情况下,一个数据项被创建后,其总是被读取。...虽然我没有介绍,但其实使用 Dictionary + Locks 方案会有更大的自由性。比如你可以锁定一次,添加多个数据项,删除多个数据项,或者查询多次等,之后再释放锁。...真相是:将所有的 Node 都放到一个数组中,无论分配和读取都是最快的方法,即使我们需要另外一个数组来记录在哪里能找到那些数据项。
这就是为什么promise1并promise2在之后记录日志的原因script end,因为当前正在运行的脚本必须在处理微任务之前完成。...promise1并且promise2在之前记录setTimeout,因为微任务总是在下一个任务之前发生。...“对我来说是新消息”的一点是,微任务是在回调之后处理的(只要没有其他JavaScript在中间执行),我认为它仅限于任务结束。...这意味着我们不处理侦听器回调之间的微任务队列,而是在两个侦听器之后进行处理。 有什么关系吗? 是的,它会在不起眼的地方(哎呀)咬你。...不幸的是,在IE / Edge中事情总是失败的,因为在回调之后无法处理突变事件。 希望我们很快会在这里开始看到一些互操作性。 你做到了!
1.# 查找两个DOM节点的最近公共父节点 oNode1和oNode2在同一文档中,且不会为相同的节点,寻找这两个节点最近的一个共同父节点,可以包括节点本身。...oNode1.contains(oNode2)得到节点2被节点1包含,当然反过来是一样的。...oNode2也可以是oNode1的祖先 1.3# 两个节点没有半毛钱关系 如下图,两个节点隔了十万八千里,谁都不认识谁,但是有一点,如果按照某个节点一直往上查找,一定可以找到某个点包含oNode1或者...3.1# 简要回顾 Promise.all()方法用于将多个 Promise 实例,包装成一个新的 Promise 实例。...'前端胖头鱼' }) console.log(arr2) 结尾 字节一面的题目,看起来确实难度不是很大,不过毕竟是一面,二面和三面才是难,后面大家如果有兴趣想了解他后面的题,可以在下方评论,我去捞一波
下面我逐一解释: 1. 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 2. 读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。 3....在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上次的最新值,通过回滚操作,都可以得到前一个状态的值。...如图中看到的,在视图 A、B、C 里面,这一个记录的值分别是 1、2、4,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。...在 MySQL 5.5 及以前的版本,回滚日志是跟数据字典一起放在 ibdata 文件里的,即使长事务最终提交,回滚段被清理,文件也不会变小。我见过数据只有 20GB,而回滚段有 200GB 的库。...事务的启动方式 如前面所述,长事务有这些潜在风险,我当然是建议你尽量避免。其实很多时候业务开发并不是有意使用长事务,通常是由于误用所致。MySQL 的事务启动方式有以下几种: 1.
下面我逐一解释: 1. 读未提交是指,一个事务还没提交时,它做的变更就能被别的事务看到。 2. 读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。 3. ...在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上次的最新值,通过回滚操作,都可以得到前一个状态的值。...如图中看到的,在视图 A、B、C 里面,这一个记录的值分别是 1、2、4,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。...在 MySQL 5.5 及以前的版本,回滚日志是跟数据字典一起放在 ibdata 文件里的,即使长事务最终提交,回滚段被清理,文件也不会变小。我见过数据只有 20GB,而回滚段有 200GB 的库。...事务的启动方式 如前面所述,长事务有这些潜在风险,我当然是建议你尽量避免。其实很多时候业务开发并不是有意使用长事务,通常是由于误用所致。MySQL 的事务启动方式有以下几种: 1.
你的组件是否有多个职责呢?...在项目发布之前,早期阶段编写的代码单元会频繁的修改。这些组件要能够被轻易的隔离并修改 -- 这正是 SRP 的题中之意。 1....多个职责的陷阱 一个组件有多个职责的情况经常被忽视,乍看起来,这并无不妥且容易理解: 撸个袖子就写起了代码:不用区分去各种职责,也不用规划相应的结构 形成了一个大杂烩的组件 不用为相互分隔的组件间的通信创建...有很多理由去改变一个同时担负了多个职责的组件;那么主要的问题就会浮现:因为一个原因去改变组件,很可能会误伤其他的职责。 ? 这样的设计是脆弱的。无意间带来的副作用极难预知和控制。...handleChange(event) 中更新了组件的 state;当 button 点击时,在 handleClick() 中将上述值存入本地存储。
[添加当前目录到缓存区中] 提交至版本库:git commit -m "注释内容" 在后续对于文件(可以操作1个或多个)操作之后,重复使用 git add与git commit指令即可...想要回到未来,需要先使用 git reflog 查看历史记录,得到最新的commit id; iii.在写回退指令的时候 commit id可以不用写全,git自动识别,但是也不能写太少...在这里插入图片描述 2.冲突的产生于解决 比如,我下班后已经push代码到线上,走了,而我之后,有同事A在线上修改了代码,多加了一行 ?...在这里插入图片描述 就会提示我,先要我pull一下,得到数据再提交。==【冲突解决的办法】==先git pull ? 在这里插入图片描述 ?...在这里插入图片描述 5.忽略文件 场景:在项目目录下有很多万年不变的文件目录,例如Css,js,images等,或者还有以谢目录即使有变动,我们也不想让其提交到远程仓库的文档,此时我们可以使用“忽略文件
不过因为是本地的ip,所以在邮箱得分中并不是很高,很容易就标识为垃圾邮件进入别人的垃圾箱。而且那段时间群晖出了点问题经常关机,总之使用上并不是太方便,特别是接重要邮件的时候总是担心会不会没收到。...同时我也测试了一下腾讯云的轻量云,这个是没有问题,可以自己手动开启。 在应用商场安装好之后,就能看到一个非常简明的界面。...添加域名之后,就会进行一个自动的配置,然后需要添加MX记录跟其他的TXT记录。 检测通过之后就可以在用户管理这里添加用户使用了。...在宝塔这个自带的发件箱里测试的时候,如果只有一个用户账号那还好,但如果是多用户的话,即使你选择用户2来发送邮件,但可能还是用户1发送的软件。...比如说我现在只有一个root@kv.mk的邮箱用户,开启了这个功能之后,那么1@kv.mk也好,dd@kv.mk也罢,你都是能收到邮件的。 有一种突然拥有无限个邮箱的感觉一样~哈哈哈哈啊哈
读提交是指,一个事务提交之后,它做的变更才会被其他事务看到。 可重复读是指,一个事务执行过程中看到的数据,总是跟这个事务在启动时看到的数据是一致的。...(类似的还有各种库存核对) 三 事务隔离的实现 在 MySQL 中,实际上每条记录在更新的时候都会同时记录一条回滚操作。记录上的最新值,通过回滚操作,都可以得到前一个状态的值。...如图中看到的,在视图 A、B、C 里面,这一个记录的值分别是 1、2、4,同一条记录在系统中可以存在多个版本,就是数据库的多版本并发控制(MVCC)。...对于 read-view A,要得到 1,就必须将当前值依次执行图中所有的回滚操作得到。...在 MySQL 5.5 及以前的版本,回滚日志是跟数据字典一起放在 ibdata 文件里的,即使长事务最终提交,回滚段被清理,文件也不会变小。我见过数据只有 20GB,而回滚段有 200GB 的库。
不过因为是本地的ip,所以在邮箱得分中并不是很高,很容易就标识为垃圾邮件进入别人的垃圾箱。而且那段时间群晖出了点问题经常关机,总之使用上并不是太方便,特别是接重要邮件的时候总是担心会不会没收到。...同时我也测试了一下腾讯云的轻量云,这个是没有问题,可以自己手动开启。在应用商场安装好之后,就能看到一个非常简明的界面。...图片添加域名之后,就会进行一个自动的配置,然后需要添加MX记录跟其他的TXT记录。图片检测通过之后就可以在用户管理这里添加用户使用了。...在宝塔这个自带的发件箱里测试的时候,如果只有一个用户账号那还好,但如果是多用户的话,即使你选择用户2来发送邮件,但可能还是用户1发送的软件。...比如说我现在只有一个root@kv.mk的邮箱用户,开启了这个功能之后,那么1@kv.mk也好,dd@kv.mk也罢,你都是能收到邮件的。有一种突然拥有无限个邮箱的感觉一样~哈哈哈哈啊哈
默认设置(Other Settings) IDEA不像Eclipse那样可以在一个窗口中打开多个项目,IDEA每次打开一个新的项目都需要开一个新的窗口或者覆盖掉当前窗口,所以在打开多个项目的时候就需要开多个窗口...需要手动打开,位置在:File-->Settings-->Editor-->General-->Auto Import。然后在下图的1和2的位置上进行勾选。...内存使用量展示 由于日常开发时都是在公司的办公电脑上进行的,所以内存总是不够用,但是又不清楚IDEA具体实时的占用了多少内存。...查看文件的本地历史记录 鼠标选中文件,然后右键,在弹出的列表中选择Local History然后就可以看到文件的本地修改记录,即使没有版本控制工具也可以看到这些记录。...IDEA有很多好用的功能,等着我们去挖掘,并且IDEA团队也在不断的更新迭代,后续我发现了其他好用的功能后会继续推荐给大家的。
不过因为是本地的ip,所以在邮箱得分中并不是很高,很容易就标识为垃圾邮件进入别人的垃圾箱。而且那段时间群晖出了点问题经常关机,总之使用上并不是太方便,特别是接重要邮件的时候总是担心会不会没收到。...添加域名之后,就会进行一个自动的配置,然后需要添加MX记录跟其他的TXT记录。 检测通过之后就可以在用户管理这里添加用户使用了。...我试着给自己的qq邮箱发,然后自动进了垃圾箱,我选择这不是垃圾邮件。然后再给自己跟其他的qq邮箱发,结果发现也不会进垃圾箱。我没有严谨的测试,不知道是不是有偶然性在里边。...在宝塔这个自带的发件箱里测试的时候,如果只有一个用户账号那还好,但如果是多用户的话,即使你选择用户2来发送邮件,但可能还是用户1发送的软件。...比如说我现在只有一个root@kv.mk的邮箱用户,开启了这个功能之后,那么1@kv.mk也好,dd@kv.mk也罢,你都是能收到邮件的。 有一种突然拥有无限个邮箱的感觉一样~哈哈哈哈啊哈