科工人 科工人
3年前
Go语言学习——彻底弄懂return和defer的微妙关系
疑问前面在函数篇里介绍了Go语言的函数是支持多返回值的。只要在函数体内,对返回值赋值,最后加上return就可以返回所有的返回值。最近在写代码的时候经常遇到在return后,还要在defer里面做一些收尾工作,比如事务的提交或回滚。所以想弄清楚这个return和defer到底是什么关系,它们谁先谁后,对于最后返回值又有什么影响呢?动手验证了解
Stella981 Stella981
3年前
Redis分布式缓存系统Lua脚本食用指引
Redis为什么添加Lua支持redislua脚本出现之前Redis是没有服务器端运算能力的,主要是用来存储,用做缓存,运算是在客户端进行,这里有两个缺点:一、如此会破坏数据的一致性,试想如果两个客户端先后获取(get)一个值,它们分别对键值做不同的修改,然后先后提交结果,最终Redis服务器中的结果肯定不是某一方客户端所预期的
Stella981 Stella981
3年前
InnoDB脏页刷新机制Checkpoint
我们知道InnoDB采用WriteAheadLog策略来防止宕机数据丢失,即事务提交时,先写重做日志,再修改内存数据页,这样就产生了脏页。既然有重做日志保证数据持久性,查询时也可以直接从缓冲池页中取数据,那为什么还要刷新脏页到磁盘呢?如果重做日志可以无限增大,同时缓冲池足够大,能够缓存所有数据,那么是不需要将缓冲池中的脏页刷新到磁盘。但是,通常会有以下几
Stella981 Stella981
3年前
Play Scala 开发技巧
在系统开发中,我们经常需要保护一些安全性较高的接口,限制这些接口每秒处理的请求数量。例如对于一个计算密集型接口,假设压测值是100rps,如果实际情况长期高于这个值,则会引起滚雪球效应,最终导致系统崩溃。下面我们一起来看看如何在Play中实现一个完全异步非阻塞的请求限速?本文代码已提交至 playcommunity(https://www.os
Easter79 Easter79
3年前
Spring事务原理一探
Spring事务原理一探概括来讲,事务是一个由有限操作集合组成的逻辑单元。事务操作包含两个目的,数据一致以及操作隔离。数据一致是指事务提交时保证事务内的所有操作都成功完成,并且更改永久生效;事务回滚时,保证能够恢复到事务执行之前的状态。操作隔离则是指多个同时执行的事务之间应该相互独立,互不影响。事务是一个比较广泛的概念,事务