每天一个小知识

9.15

今天也是被自己菜哭的一天

//不对
while(j<popped.length && stack.peek() == popped[j] && !stack.isEmpty() ){
     stack.pop();
     j++;
}

while里的顺序,必须要先判断jstack的条件,才能执行stack.peek() == poped[j],否则会报EmptyStackException

while(j<popped.length && !stack.isEmpty() && stack.peek() == popped[j] ){
     stack.pop();
     j++;
}
9.16
9.19
  • 在默认的事务隔离级别下,即REPEATABLE READ(可重复读)下,InnoDB存储引擎采用Next-Key Locking机制来避免幻读。

    InnoDB存储引擎的锁的算法有三种:
    Record lock:单个行记录上的锁
    Gap lock:间隙锁,锁定一个范围,不包括记录本身
    Next-key lock:record+gap 锁定一个范围,包含记录本身

9.20
  • 大量的if-else,可以用策略模式重构
9.21
  • HTTP 3.0:google的QUIC协议从TCP切换到UDP。
9.22
  • MVCC是通过在每行记录后面保存两个隐藏的列来实现的。这两个列,一个保存了行的创建时间,一个保存行的过期时间(或删除时间)。存储的并不是实际的时间值,而是系统版本号(system version number)。
  • 每开始一个新的事务,系统版本号都会自动递增。事务开始时刻的系统版本号会作为事务的版本号,用来和查询到的每行记录的版本号进行比较。在数据更新时需要去比较持有数据的版本号,版本号不一致的操作无法成功。
9.23
  • 高并发下订单号唯一:
    如果有并发的话,并且订单号在同一台主机产生多个进程,只要把进程的ID添加到序列号中就可以保证订单号唯一。
    如果订单在不同主机中,把IP地址 CPU序列号 能区分的号码添加到序列号中就能保证唯一。
    时间戳+用户ID+随机数+乐观锁
9.24
  • 幂等性:对同一个系统,使用同样的条件,一次请求和重复的多次请求对系统资源的影响是一致的。

    例如:博客点赞问题,要想防止一个人重复点赞,可以设计一张表,将博客id与用户id绑定建立唯一索引,每当用户点赞时就往表中写入一条数据,这样重复点赞的数据就无法写入。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值