[email protected]:~$

  • 高性能 MySQL 驾驶笔记

    聊天群里看到有人复习 MySQL 准备面试,想起之前整理过《高性能MySQL》的笔记,倒是很适合面试前的准备 内容大部分是整理自《高性能MySQL》第三版,外加少量的个人经验 Schema Tips: Varchar 存储时会自动调整长度 MySQL 会根据 Varchar 指定的长度预分配空间,所以用尽量小的值效率会更好 Varchar 长度变大时会造成碎片和性能问题,MySQL 需要重新为其分配空间 文本类型数据可以考虑是否使用 Binary,性能会比文本好 关联键用 int 效率最高 主键小的话表也会小,所以用 int 做主键可以提升性能。可以考虑内部 int, uuid 外部的“双主键”设计 TimeStamp 效率更高,4 个字节,带时区信息,储存为 unix time 默认不为 NULL。DateTime 则无限制,用数字存储,时间支持到 9999 年,效率不如 TimeStamp IP 应该使用整数存储,使用 MySQL 函数互相转换 Columns 过多会引发性能问题,因为 MySQL 服务层会负责转换引擎层的数据 索引: 一般使用 B+Tree,可以控制在 log 时间内...

  • 从零设计软件

    程序的设计是一个明确的步骤 - 代码大全 从零设计软件,对程序员来说似乎不应该是件难事,毕竟程序员的工作就是设计软件并写代码去实现。 但随着项目规模变得庞大,架构师、产品经理、设计师等角色加入了软件设计的流程,这些角色以自己的专业技能聚焦某一项的设计工作。软件设计被拆分为多个流程,这对于项目来说当然是好事,更多的专业性会让产品的某些特性更加出色。但设计工作的划分难免会使部分设计者一叶障目,难以从全局来观察项目,尤其是刚步入工作的人。 很多人说自己喜欢编程喜欢写代码,但“写代码”这个词非常容易误解,编程 = 设计 + 写代码,而不仅仅是写代码。 随着程序员的成长,应该逐渐把编程的重点放在设计,如:接口、API、算法、模块划分、架构等。并更进一步了解软件的整体设计,而不仅仅是编程这一环节,了解软件的整体设计会让你分清优先级,知道什么该做、什么是多余的,下一步该做什么,软件的哪些目标达到了、哪些没有。这些意识对于提高效率至关重要。掌握这些意识,也就是有了大局观。 如果是自己做过一款产品(Side Project),会对软件整体的设计有更好的把握。很多程序员做 Side Project 时的误区是会从代码开始,冒出新想法时就不断的堆砌代码,从而导致越来越复杂,最终放弃。 这种误区是程序员在工作中养成了习惯自底向上的解决问题,而没有掌握大局,自上向下的分析问题。 从零设计软件,需要自上向下的思考,先把键盘丢开,拿起笔和纸,思考下面问题的答案: 1. 软件的目标是什么? 这个问题很简单,却直指核心。可以认为整个软件就是对这个问题的答案。 如果对这个问题没有明确答案,则需要对你的模糊想法进行大量的 Research,直到了解相关领域,得出了更明确的答案。 2. 设计软件原型(MVP) 能达到目的的最简设计。用简单的语言和草稿图来描述。 3. 细化业务逻辑、流程 根据上面的设计稿罗列功能点,用户使用软件的交互过程,流程等。 4. 划分模块组件 根据功能点来设想需要哪些程序组件、模块。 5. 制定模块接口 对上一步中的组件、模块制定详细的接口。 6. 写代码 最终实现的步骤。 经过这几个步骤,我们进行了自上向下的思考,完成了从零设计软件。 最近开始了新的 Side Project (代号: Alchemist)。思考了从零设计软件的过程,并总结成本文。欢迎评论和喷。 另外推荐下 Indie Hackers,一个国外的 Side Project 交流社区。...

  • 保持谦逊、努力、平和

    傲慢、嫉妒、愤怒、怠惰,或许皆因目光短浅? 睡前翻知乎,看到有人列举了爱因斯坦、费曼、薛定谔、杨振宁等人年轻时的照片和成就。突然意识到教科书上的人物在自己的年龄段已经作出了影响全人类的贡献。这触发了我下意识的思考,从小把他们当成偶像,现在已经超过了他们拥有成就时的年龄,而我和大多数人也还是一事无成。 年轻人的嫉妒和愤怒往往来自于对比,从小时候中国式教育的分数竞争,长大后的出身、教育经历,工作中的职级和薪水,中年人的房子和车。社会中鄙视链环环相扣,而这条鄙视链同时也传播着傲慢、嫉妒、愤怒、怠惰。 傲慢蒙蔽人的双眼,对别人的鄙视与嘲笑远比提高自我来的轻松,这样又使人陷入了怠惰,当遇到阻力或鄙视链上层的嘲笑时,由于心理的巨大落差心生嫉妒与愤怒。四种恶行使人焦虑,难以前行,只求在鄙视链中获得些许快感。 看着爱因斯坦、费曼、薛定谔、杨振宁等人年轻时的成就,感觉自惭形秽。 一事无成却傲慢,渴望成就却怠惰。 人应该 Focus 在自己的提升、而不是与他人的对比。竞争意识本来是为了驱使人提升自我,却被教育家和世人滥用导致更大的问题,竞争可能短期会带来使人努力的效果,但其本质是用 嫉妒、愤怒 迫使人努力,而给胜者 傲慢、怠惰 的奖赏。由恶行来使人前进,长此以往本末倒置,使人沉沦于恶行的奖惩,而忘记了提升自我的本意。 谦逊、努力、平和,提醒自己牢记三种善行。 谦逊的去学习新的知识和观点,努力的工作而非追求虚名小利,平和的审视自己,认识到自己的进步而快乐。 哪些历史人物的实际年龄与大众印象中的相差很多,使得人们观感错乱? 七宗罪 中国人如何经营自己