文章列表
分布式锁简要归纳
为何需要分布式锁?在单机的服务中,对于并发下的锁争用,可以在进程内实现。然而分布式的情况下,各个服务分开部署,无法通过这种方式获得,因此需要分布式锁来进行同步。 # 实现 分布式锁可以怎样实现呢?实际上主要就是能够实现一个大家都能读写的东西,且保证一个写入了另一个能感知到并被拒绝,也就实现了所谓的锁。 # MySQL 依靠 MySQL 的唯一性去保证,例如插入一条记录,根据主键 / 唯一性的列,来保证只有一个能插入成功,成功者即获得锁。 同时需要设置好记录的时间,以便于实现超时释放的问题,避免死锁。 但高并发的情况下,MySQL 死锁检测比较影响效率,相对来说它是比较重的,较少用于加锁。 #...
more...MySQL的一些执行流程笔记
MySQL 的一些动作的执行流程记录。 # 更新 执行: update T set c=c+1 where ID=2; 其中浅色由 InnoDB 引擎执行,深色由 server 层执行器执行。先写入 redo log,标记为 prepare;再写入 binlog;再提交事物,标记 redo log 为 commit,此为两阶段提交。 为什么需要? 确保数据正确性。binlog 属于 Server 层的日志,而 InnoDB 层为实现 crash-safe ,实现了 redo log 日志。它们有以下不同: redo log 是物理日志,记录了数据页做的修改;binlog...
more...Redis 持久化——AOF与RDB
Redis 提供的持久化,可以避免进程退出造成的数据丢失的问题。启动时,通过加载持久化文件,可以恢复之前的数据。Redis 提供了两种持久化的方式: # RDB RDB 持久化是把当前进程数据生成快照保存到硬盘的过程。 触发方式有主动触发和手动触发。 # 触发机制 手动触发命令: save 阻塞当前 redis 服务器,直到 RDB 完成 bgsave fork 子进程进行 RDB 操作,阻塞只存在于 fork 期间 除了手动触发,redis 内部还存在自动触发的机制,例如以下场景: 使用 save 配置,如: save m n ,表示 m 秒内数据集存在 n 次修改时自动...
more...ElementUI upload组件的问题
使用上传的时候,总是遇到各种问题,每次搜索之后用上便忘记,这里总结一下几种上传的方式和遇到的问题。 # 数据的绑定问题 上传组件有属性 file-list , 但并没有双向绑定,主要还是用于显示已上传的文件使用的。传入对象数组,每个对象需要有 url 属性,某些样式的上传框还有 name 需要显示。 [ { url: '', name: '' }]上传之后这个数组并不会更新,因此需要自己维护上传的文件列表,尤其是已经上传的,和本次上传的。 由于各种事件,各种状态,更新维护数组容易混乱,最好还是在最后上传删除都完成后,通过...
more...