夏令时的困惑

对于像我一样一直生活在中国的年轻人来说, 夏令时也许是比较一个陌生的概念. 那么, 夏令时到底是什么呢? 答: 夏令时是一种为节约能源而人为规定地方时间的制度,在这一制度实行期间所采用的统一时间称为“夏令时间”。一般在天亮较早的夏季人为将时间调快一小时,可以使人早起早睡,减少照明量,以充分利用光照资源,从而节约照明用电。 据称最早有夏时制构思的是美国著名政治家、科学家本杰明·富兰克林,他在任美国驻法国大使期间,觉得法国人晚起晚睡的生活习惯浪费了大好的阳光,建议他们早睡早起,这样每年可以节约6千4百万磅蜡烛。夏时制在英语里就是“节约阳光时间”的意思。 到1907年,英国建筑师威廉·维莱特正式向英国议会提出夏时制的构思,主要是为了节省能源和提供更多的时间用来训练士兵. 第一次世界大战期间,德国首先实行夏时制,英国因为怕德国会从中得到更大的效益,因此紧跟着也采取了夏时制,夏时制节省了约15%的煤气和电力,而法国不久也效仿实行。 1942年,第二次世界大战期间,美国又再度实行夏时制,1945年战争结束后取消。1966年,美国重新实行夏时制。欧洲大部分国家从1976年,即第四次中东战争导致首次石油危机(1973年)三年后开始实行夏时制。 1986年至1991年,中华人民共和国在全国范围实行了六年夏时制,每年从4月中旬的第一个星期日2时整(北京时间)到9月中旬第一个星期日的凌晨2时整(北京夏令时)…

小心区间锁

某日收到项目监控系统报警, 经查询业务日志后发现, 是数据库中发生一处死锁触发业务异常回滚导致的. 执行 show engine innodb status; 得到如下死锁日志(相关数据已做脱敏处理): ------------------------ LATEST DETECTED DEADLOCK ------------------------ 2018-01-01 20:09:11 7fa66d7be700 *** (1) TRANSACTION: TRANSACTION 138251491, ACTIVE 0.152 sec inserting mysql tables in use 1, locked 1 LOCK WAIT 12 lock struct(s), heap size 2936, 7 row lock(s), undo…

Codewars:一个鸡蛋引发的思考

在codewars上遇到这样一道题: Eulampy 有一筐鸡蛋, 有一天在一幢摩天大楼下, 他的朋友对他说, 如果你给我n个鸡蛋, 我保证可以告诉你, 在h层楼的范围内, 鸡蛋最多从第几次楼扔下来而不会被摔破. Eulampy说, "没问题, 但是我最多同意你扔m次, 看你扔的次数太多我会难过的.", 请设计一个函数, height(n, m), 求扔鸡蛋实验的总量程, 即 h. 需要说明的是, 我们假设每个鸡蛋的都是完全一样的, 当一个鸡蛋被扔下了而没破, 就可以再次使用. 原题地址:https://www.codewars.com/kata/faberge-easter-eggs-crush-test/train/python 重点来了, 这道题有三组测试, 分别是: 基础的(basic), 进阶的(advanced), 真格的(serious). test.it('basic tests') test.assert_equals(height(…

一个奇葩的Chrome插件:Flappy Octocat

前段时间看朋友写了个 Chrome 插件觉得特别酷,可以在 github 的 contributions board 上玩康威生命游戏。 大概是像这样的: 受朋友的启发,我也写了一个 Chrome 小插件,可以让我在 contributions board 上玩 flappy bird 一样的游戏,画面大概是这样的: 不过,到底是什么样的神经病才会在 github 的 contributions board 上玩游戏呢 🌚 如果喜欢的话,可以从 https://github.com/chxj1992/flappy-octocat 获得这个插件及其源码 或者,直接从 Chrome 的 Web Store 安装这个游戏…

Codewars:从逆波兰表达式到Three-Pass编译器(2)

在这里我想说的第二道题,我把它理解成一次对逆波兰表达式的运用和延伸。关于逆波兰表达式的相关知识,可以在前一篇博客中读到 : Codewars:从逆波兰表达式到Three-Pass编译器(1) 和前一题相比,这道题的题面就要复杂多了。 我们有一种如下的语法规则的编程语言: [ a b ] a*a + b*b 这里我们定义了一个函数,这个函数有两个参数(a 和 b),函数功能是计算 a 和 b 的平方和。 现在,请为该语言实现一个简单的语法编译器。编译过程可以拆分为三个步骤: 1.将函数解析为一个抽象语法树(AST ) AST有如下规则: { 'op': '+', 'a': a, 'b': b } // add subtree a to subtree b { 'op': '-', 'a': a,…

Codewars:从逆波兰表达式到Three-Pass编译器(1)

最近沉迷于在 codewars 上做题无法自拔,其中有两道题我感觉挺有意思,觉得值得记下来,故成此文。 第一道题的题面非常简单,实现一个包含 + - * / 四则运算的计算器,输入样例:1 + 2 * 3, 期望结果 7。 原题链接见下: https://www.codewars.com/kata/calculator 从小学数学的角度来思考这道题,答案是显而易见的:乘除法的优先级要高于加减法,所以我们可以把表达式中所有乘除法先提出来计算出结果并放回原来的位置,再依次计算加减法得到整个表达式的结果。依照这样的思路,我们可以有如下的代码实现(In Python): from operator import add, sub, mul, div FIRST = {'*' : mul, '/': div} SECOND = {'+': add,…