登柳州城楼

admin 提交于 星期三, 12/14/2016 - 09:56

登柳州城楼寄漳汀封连四州
作者:柳宗元

城上高楼接大荒,海天愁思正茫茫。
惊风乱飐芙蓉水,密雨斜侵薜荔墙。
岭树重遮千里目,江流曲似九回肠。
共来百越文身地,犹自音书滞一乡。

 

石鱼湖上醉歌并序

admin 提交于 星期一, 12/12/2016 - 15:55

石鱼湖上醉歌并序

作者:元结

漫叟以公田米酿酒,因休暇则载酒于湖上,时取一醉。欢醉中,据湖岸引臂向鱼取酒,使舫载之,遍饮坐者。意疑倚巴丘酌于君山之上,诸子环洞庭而坐,酒舫泛泛然触波涛而往来者,乃作歌以长之。


石渔湖,似洞庭,夏水欲满君山青。
山为樽,水为沼,酒徒历历坐洲岛。
长风连日作大浪,不能废人运酒舫。
我持长瓢坐巴丘,酌饮四座以散愁。

数据库表加锁

admin 提交于 星期一, 12/12/2016 - 13:47

一直以来我都没有考虑过些SQL语句是需要自己处理锁的问题。最近一段和钱有关的代码收到攻击才让我意识到问题的严重性。

受攻击的代码大概是这样子的:

 

SQL查询余额

if (余额 > 0) {

  执行提现操作

  减去余额

}

攻击者同时发送了多个提现请求,提现请求在判断是否有余额的时候都显示有余额,然后都允许提现。事实上,这里面其中一个请求提现完之后就不够余额了,但是其它进程都不知道这个情况。要避免这种情况的发生,需要对查询余额和扣减余额的操作做成原子操作,在查询和扣减操作之间不允许余额再发生变动。

MySQL中有"SELECT ... FOR UPDATE"去解决这种情况,需配合Transacion来实现,参考:http://dev.mysql.com/doc/refman/5.7/en/innodb-locking-reads.html

标签

观公孙大娘舞剑器行并序

admin 提交于 星期五, 12/09/2016 - 10:03

观公孙大娘弟子舞剑器行·并序
作者:杜甫

大历二年十月十九日,夔府别驾元持宅,见临颍李十二娘 舞剑器,壮其蔚跂,问其所师,曰:“余公孙大娘弟子也。” 开元三载,余尚童稚,记于郾城观公孙氏,舞剑器浑脱, 浏漓顿挫,独出冠时,自高头宜春梨园二伎坊内人洎外供奉,晓是舞者,圣文神武皇帝初,公孙一人而已。玉貌锦衣,况余白首,今兹弟子,亦非盛颜。 既辨其由来,知波澜莫二,抚事慷慨,聊为《剑器行》。 昔者吴人张旭,善草书帖,数常于邺县见公孙大娘舞西河剑器,自此草书长进,豪荡感激,即公孙可知矣。

昔有佳人公孙氏,一舞剑器动四方。
观者如山色沮丧,天地为之久低昂。
霍如羿射九日落,矫如群帝骖龙翔。
来如雷霆收震怒,罢如江海凝清光。
绛唇珠袖两寂寞,晚有弟子传芬芳。
临颍美人在白帝,妙舞此曲神扬扬。
与余问答既有以,感时抚事增惋伤。
先帝侍女八千人,公孙剑器初第一。
五十年间似反掌,风尘鸿洞昏王室。
梨园子弟散如烟,女乐余姿映寒日。
金粟堆前木已拱,瞿塘石城草萧瑟。
玳筵急管曲复终,乐极哀来月东出。
老夫不知其所往,足茧荒山转愁疾。

 

西塞山怀古

admin 提交于 星期四, 12/08/2016 - 16:35

西塞山怀古
作者:刘禹锡

王濬楼船下益州,金陵王气黯然收。
千寻铁锁沉江底,一片降幡出石头。
人世几回伤往事,山形依旧枕寒流。
今逢四海为家日,故垒萧萧芦荻秋。

 

微信小程序

admin 提交于 星期四, 12/08/2016 - 11:06

文档:https://mp.weixin.qq.com/debug/wxadoc/dev/?t=20161122

补充一些抱怨,微信小程序产品本身的研发应用了比较深的浏览器技术,但是腾讯团队的技术能力(可能涉及整个中国的软件研发能力)难以胜任,导致问题非常多。不仅仅是微信小程序本身,微信内置的浏览器也是一样。尽管采用和Chrome一样的源代码,但是整体性能和稳定性都远差于Chrome。我总是觉得国内浏览器研发在基于Chrome内核的绝大部分二次开发工作都是狗尾续貂。我希望这些公司老老实实把别人的代码抄过来就算了,能别改的就别改。

Drupal 7模块及表单编写教程(form_example)

admin 提交于 星期五, 12/02/2016 - 16:07

本教程将以最小的篇幅解释Drupal 7里最核心的两个概念:怎样创建自己的模块和怎样操作表单。

首先下载examples模块,启用其中的form_example子模块。我们将分析form_example的代码。examples模块是学习Drupal的很好资料,读者可以自行学习其它子模块。

1. 模块文件结构

Drupal 7的模块以模块名作为文件夹的名称,放在Drupal代码目录树里的某个modules文件夹内。系统模块放在Drupal根目录的modules下。Drupal官网上可以下载的模块可以放在sites/all/modules下。而自己创建的模块可以放在sites/default/modules下。这不是绝对的,不按这样的规则去放,模块也能被识别出来。如果在不同modules里放有同名的模块,会产生冲突。

一个模块的的文件夹里至少包含两个文件:foo.info和foo.module。这里的foo是指模块名,对于form_example来说就是form_example.info和form_example.module。

标签