16年5月27日~28日,北京美团总部举办Hackathon,项目小结
不论比赛排名如何、能否拿到奖品,学到知识才是自己硬实力的提升

Database部分
VARCHAR, TEXT
VARCHAR(n): 存储在列元素中;可以作为索引
TEXT: 列元素中只保存一个指针,真实文本保存在另外的存储区域;不可作为索引
注:存储位置区别仅出现在MySQL上,对于InnoDB,如果VARCHAR类型的元素过长,内部仍然会使用TEXT形式的保存方案
实际应用中,要根据不同类型的输入,选择不同类型的格式
| Type | Case | 
|---|---|
| VARCHAR(X) | user name, email, country, subject, password | 
| TEXT | messages, emails, comments, formatted text, html, code, images, links | 
| MEDIUMTEXT | large json bodies, short to medium length books, csv strings | 
| LONGTEXT | textbooks, programs, years of logs files, harry potter and the goblet of fire, scientific research logging | 
Node部分
数据库连接
一个典型的SELECT请求写法
1  | // 依赖mysql模块  | 
http请求
一般写法是
1  | // handler为回调函数  | 
其中 resp.write('foo') resp.end() 也可以简写为 resp.end('foo')
数据Json化
js中使用的是弱类型对象
1  | var foo = {  | 
对于这种对象,直接使用 resp.write(foo.toString()) 是无法返回数据的,拿到的其实是对象在内存中的指针。这里要用 JSON.stringify(foo).toString() 来生成结果。
1  | resp.write(JSON.stringify(foo).toString());  | 
静态资源
使用 express 框架,非常简单(@王善成 介绍说现在 koa 更为流行,待调研)。
通过形如 http://10.4.232.53:9528/live_1.jpg 的地址来获取静态资源(不需要拼接 public)
1  | require('express');  | 
定时任务
使用 setInterval(func, delay) 来执行周期任务,因为代码本身有运行时间,函数有调用时间,因此在时刻上并不会保证100%的精确,(如声明了3000ms,可能在2990时执行,也可能在3010时执行)
1  | // 定时任务,关闭不在保活列表里的直播源  |