眨眼间,依然18年的四月份了,三月艳阳天已过,春雨也已下过一场了。
记录、分享、成长
线上服务的表结构调整是业务需求扩展和系统设计拓宽的常见方式,但对线上服务而言,线上库表调整可能对线上服务产生影响。
本文以MySQL 5.6.16-log为例,结合InnoDB引擎特性,给出综合分析,几个核心问题:
Linux内存管理模式,页式管理适合于大块内存的情形,而对于内核对象级别的较小内存情形下,不足以占用1个页。
在linux内核中会有许多小对象,这些对象构造销毁十分频繁,比如i-node,dentry。这么这些对象如果每次构建的时候就向内存要一个页,而其实际大小可能只有几个字节,这样就非常浪费,为了解决这个问题就引入了一种新的机制来处理在同一页框中如何分配小存储器区。这就是我们要讨论的slab层。在讲述slab前,我想先铺垫一下有关内存页的概念,我们都知道在linux中内存都是以页为单位来进行管理的(通常为4KB),当内核需要内存就调用如:kmem_getpages这样的接口(底层调用__alloc_pages())。那么内核是如何管理页的分配的,这里linux使用了伙伴算法。slab也是向内核申请一个个页,然后再对这些页框做管理来达到分配小存储区的目的的。
结论:正确分析CentOS7系统可用内存的方式
free
和/proc/meminfo中MemAvailable
综合确定,以后者为主free
中Mem:available
~=/proc/meminfo中MemAvailable
,二者等价准确的说,应该是CentOS7在初始版本中free未合理获取系统可用内存数据
在CentOS 7.2版本中已增加Mem:available
显示正确的系统空闲内存。
原文地址:https://medium.com/golangspec/interfaces-in-go-part-i-4ae53a97479c
要点:
在web/activity中见过事务机制保证发券环节对券码存量校验,这是典型的并发、读写操作的实例。
Redis的事务机制Transaction通过四个命令来完成:MULTI, EXEC, DISCARD and WATCH
,建议精读链接文章对Redis事务机制有详细介绍。
multi
开始,到exec
结束。It can never happen that a request issued by another client is served in the middle of the execution of a Redis transaction. This guarantees that the commands are executed as a single isolated operation.
文章索引:
isset()
、empty()
、is_null()
的区别isset()
、empty()
、is_null()
的区别isset()
判断变量是否已设置(set)且非null,isset()官方文档
unset()
后,则isset()
返回falseisset()
函数支持多参数,如isset($foo, $bar)
isset()
判断数组是否包含特定索引值,注意数组值为null的情形
出发点:SEO驱动的URL调整,将http://www.hello.com/hello?xxx=xx 调整为 http://www.hello.com/hello/?xxx=xx 有助于提升百度SEO。
故障现象:
301跳转时通过回复报文头的Location字段指明下一跳地址,但此次bug导致Location地址错误,导致301跳转后访问不存在域名。
正确的301回复报文头:/城市/ershouche/过滤条件?参数列表
1
Location: /cn/ershouche/pr-0-5/?fr=bd_pz&fr_word&utm_campaign=cn&utm_source=baidu_pc&utm_medium=pz&utm_term=%E5%AD%90%E9%93%BE4%2E1
异常的301回复报文头:1
Location: //ershouche/pr-5-10/?fr=bd_pz&fr_word&utm_campaign=cn&utm_source=baidu_pc&utm_medium=pz&utm_term=%E5%AD%90%E9%93%BE4%2E2