whoru

学习、分享、交流、沉淀

1. 关于索引

在 MySQL 中,索引在存储引擎层实现

1.1. 使用索引的好处

  • 大大减少存储引擎需要扫描的数据量
  • 帮助我们进行排序,以避免使用临时表
  • 可以把随机 I/O 改为顺序 I/O

1.2. 建立原则

  • 适量,不是越多越好!!!
  • 过多索引的影响
    • 增加写操作的成本
    • 增加查询优化器的选择时间
阅读全文 »

本文主要介绍了在数据库结构设计过程中需要考虑的一些问题,来源于以往工作、项目经历以及网络资料等,如果有不准确的地方,欢迎指正交流。

在数据库结构的设计过程中,务必注意以下两点:

  • 减少数据冗余,节约数据库存储空间;
  • 尽量避免在数据维护过程中出现更新、插入、删除异常。

一般我们按照如下步骤开始:

  1. 需求分析:全面了解产品设计的存储需求,保证数据的安全性和完整性
  2. 逻辑设计:设计数据的逻辑存储结构,处理数据实体之间的逻辑关系,解决数据冗余和数据维护异常
  3. 物理设计:根据具体所使用数据库的特点进行表结构设计
  4. 维护优化:根据实际情况,对索引、存储结构等进行优化

其中 1、2 是确立大方向;3 是对 1、2 的具体实施(本文会介绍一些注意事项和建议,详见下文);4 是后期的迭代优化。

阅读全文 »

本文整理自:极客时间微课《如何做好一场技术演讲》

1. 精心准备

1.1. 明确演讲主题

如同架构设计一样,了解需求永远是第一位的,任何脱离需求的架构设计都是耍流氓。

想要开始演讲,首先需要了解听众的诉求,确认下面这些问题:

  • 听众组成?
  • 对要演讲主题的了解程度?
  • 听众想听什么?
  • 演讲能给听众带来什么价值?
  • ……

1.2. 确定演讲主线

  1. Who 自我介绍,让听众了解自己,建立连接;
  2. What&When 今天要分享的主题,通过简短介绍吸引听众的注意力、好奇心;
  3. Why 为什么要做这个架构改造、技术升级,整个项目的背景是什么样的,结合对听众的了解,做特定的介绍;
  4. How 深入浅出 3~4 个最核心的内容点,当然为了全面性,你可以都罗列出来,但介绍的重点建议控制在 3~4 项;
  5. Future 让大家了解你未来的计划,你对技术趋势的看法等;
  6. Recap 对今天的主题再做一个回顾,让听众加深对核心内容记忆。

1.3. 关于 PPT

  • 做一个演讲型(注重体验和创意)的幻灯片,风格保持“简洁、干净、一致、跳脱”。
  • 字体和风格的选择要保持一致性,最好不要用三个以上的颜色。
  • 合理的排版;
  • 合理而有意义的动效(一定不要太多);
  • 页数尽量控制在 15~20 页,可根据实际情况再追加,但一定不要太多;
    • Who 1 页
    • What&When 1~2 页
    • Why 1 页
    • How 展开 3~4 点,每点 2~3 页
    • Future 1 页
    • Recap 1 页
  • 减少大篇幅文字,用最简洁的文字+图表一图胜千言)来表示;
  • 以 keyword 为指引,适当的临场发挥,切勿照本宣科
阅读全文 »

本文整理自: 极客时间专栏《朱赟(yūn)的技术管理课》 (微信扫码进入课程)

从给答案到做引导

每次别人向你请教问题,你都有现成的答案或快速找到答案,就会渐渐导致两个问题:

  1. 向你问问题和各种琐事的人越来越多;
  2. 因为你给的是答案,下次如果有类似的问题,别人还会来找你。

那么如何改变呢? 授人以鱼,不如授人以渔

  • 首先,需要明确什么时候适合直接给答案,什么时候适合给线索,让对方自己找答案。

    可根据问题类型(简单、复杂、常见、不常见等),提问人所处阶段(新人、略有经验、熟手)来决定。

  • 其次,如何引导?

    可以根据对方的问题,提出一些相关的问题,通过问题去引导对方进行深入思考。

  • 最后,引导的好处。

    如果是通过别人的引导,自己摸索出来的,那么他解决类似问题的能力后续就会提升。同时,也会调动他工作的积极性,让其产生一种自己解决来问题的成就感。

阅读全文 »

1. PM2 是什么?

PM2 = Process Manager 2

ADVANCED, PRODUCTION PROCESS MANAGER FOR NODE.JS

PM2 is a daemon process manager that will help you manage and keep your application online 24/7

上面是官网给出的 title,简单来说:它是在后台运行的 Node.js 进程管理器,提供一套针对生产环境运行时的工具集,可以保障你的程序 7 * 24 小时在线。

官网:https://pm2.keymetrics.io

文档:https://pm2.keymetrics.io/docs/usage/quick-start

总结其主要特性如下:

  • 日志管理:应用程序日志保存在服务器的硬盘中 ~/.pm2/logs/
  • 负载均衡:使用 Node cluster 集群模块,可以通过创建共享同一服务器端口的多个子进程来扩展您的应用程序。这样做还允许您以零秒停机时间重新启动应用程序,实现热重载。
  • 终端监控:可以在终端中监控您的应用程序运行状况,包括CPU使用率,使用的内存,请求/分钟等。
  • 自动停止不稳定的进程(避免无限循环)
  • 支持静态服务器功能
  • 提供 HTTP API
阅读全文 »