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 | // 定时任务,关闭不在保活列表里的直播源 |