基础语法示例

1
2
3
4
5
6
# H1
## H2
### H3
#### H4
##### H5
###### H6

引用

  • 无序列表
  • 无序列表
  • 无序列表
  1. 有序列表
  2. 有序列表
  3. 有序列表

斜体

粗体

行内代码

1
2
多行代码
多行代码

分割线:


数学公式

1
$$d=\sqrt{\sum_{k=1}^n(x\_{1k}-x\_{2k})^2}$$

效果:

$$d=\sqrt{\sum_{k=1}^n(x_{1k}-x_{2k})^2}$$

流程图

sequenceDiagram
    老板C ->> 员工C : 开始实行996
    
    par 并行
        员工C ->> 员工C : 刷微博
    and
        员工C ->> 员工C : 工作
    and
        员工C ->> 员工C : 刷朋友圈
    end
    
    员工C -->> 老板C : 9点下班

ROI 是指投资回报率,对应系统架构设计上来说需要从业务发展和收益角度综合评估 ROI 来进行取舍。需要确保架构符合业务的发展,在设计开发时需要重点关注一下几个地方:

  1. 系统迭代需求的提出。
    • 为了满足业务需求
    • 为了解决系统问题
      • 需要收集系统问题,找出核心问题。
  2. 提出设计方案。
    • 明确核心价值,解决了什么样的关键问题、系统难点、业务需求。
    • 实现成本
      • 复杂度,实现设计方案的复杂度是否可以接受。
        • 技术复杂度,系统的并发性、可用性、一致性要求。
        • 业务复杂度,对于业务需求的支持程度。
      • 人力成本,是否满足各方对人力消耗和时间节点上的要求。
    • 设计的局限性
      • 可量化指标,项目的结果是否可以被量化,被观测到。
      • 可测试性,测试的覆盖度能到多少,QA 的测试成本有多少。
      • 可扩展性,下一次迭代可以降低多少成本。
  3. 评估产出收益,项目的价值。
    • 人力节省
    • 机器节省
    • 收入提升
    • 流量提升

按照上述清单可以在进行架构设计时进行思维训练,同时不要局限于清单,做到动态调整。

基于多次复盘的经验汇总,仅以当前工作环境做汇总,供参考。

  1. 系统问题定位和解决
    • 需要抓住足够多的证据链,不能臆测代码和运行机制。常用手段有 curl,日志,sentry。
    • 能在本地复现不要跑到联调,降低定位成本。
    • 排查超过两小时并且无清晰路径下需要扩大问题知晓范围,找人协助。
    • 排查过程需要有详尽的记录,记录要字符串,减少截图数据。
  2. RFC 设计
    • 跨系统交互需要补充系统交互图,明确系统边界。
    • 需要数据备份和回滚方案,做好预案。
    • 设计文档需要同步小组群。
    • 评审会需要拉上 leader 知晓。
    • 系统设计需要考虑兼容性和可观测性。
    • 需求项目要建立人员 backup 机制。
  3. 系统开发
    • 迁移是迁移,不要做重构,保证功能原样,同时也会降低测试成本。
    • 警惕复制代码的行为,必须知晓你提交代码的逻辑和背后含义。
    • 对于复杂逻辑和接口需要有详尽的注释,或者粘贴 wiki 链接说明设计。
    • 新系统设计需要维护起测试用例,保证单测覆盖度,降低测试成本。
  4. 联调和沟通效率
    • 重大项目和长耗时,需要考虑拉站会或者小黑屋。
    • 能群聊的不要私聊,扩大内容的知晓范围。
    • 并行工作需要分时间块,避免碎片化时间并行。
    • 遇到人力合作问题,需要及时升级到 leader 支持。

技术面试看什么

  1. 流畅的表达能力和清晰的逻辑分析能力。
  2. 比较扎实的基础知识和技术学习热情。
  3. 问题发现和推动解决问题的能力。
  4. 丰富的项目经验积累和架构规划能力。

优秀候选人的一些品质

  1. 对于所了解的技术知识理解的很透彻,从语言描述上能够表达准确、有逻辑、有调理。
    • 表达中不会有『这个』『那个』『嗯』『啊』的语气词和停顿。
    • 对于项目问题的解答,主动阐述项目背景,问题现状,做了什么,产生什么样的收益。
    • 优先说出答案的关键 123,再展开举例说明,是一种清晰有效的表达方式。
  2. 从技术底层知识上,对于一些相对关键的技术知识能够灵活掌握,能从技术前世今生很顺畅的表达出来。
  3. 实践能力上,候选人对于理论的了解不仅停留在书面上,而是动手实现一个技术理论。

技术面试怎么做

从工作经验来分,以三年为界,分为两类面试思路:

  1. 越是经验丰富的候选人,可以提出一个比较模糊的问题,尽量让候选人来主导拆解这个过程。同时也要避免跑题浪费时间。
  2. 对于经验很少的候选人,则可以从基础性知识和具体的问题上展开,如果难度过高需要积极的给出提示和引导。

前言

今天要说的是 macOS 下的一款效率软件 —— Alfred,想必大家就算没用过也耳闻过,老实说用好它带来的效率提升绝对不止 10 倍。博主已经安利给很多同事使用,他们普遍觉得上手有些困难,主要是配置复杂,今天的文章会一步步地介绍这款神器的高效之处。

有的人可能会说系统自带的 Spotlight 就很好用,确实是这样。在之前我会用 Spotlight 搜应用、文件、进行计算等,而 Alfred 的功能更强大,是一款可以更加 All in 的效率工具,里面还有我最常用的剪贴板历史、快速网页搜索、谷歌二次口令扩展等功能,接下来我会逐一介绍。

阅读全文 »

谈谈领域驱动设计的落地

前文提到了事件风暴产出的领域模型是概念模型,到实际落地还有些距离,而落地的结果也是各不相同,我觉得说落地,要先回顾一下领域驱动设计的两个作用。

  1. 通过战略设计拆分子域,指导微服务拆分。
  2. 通过事件风暴建立领域概念模型,指导代码设计。

也就是说领域驱动设计产出的结果是指导性的,并不是一个直接可落地的结果。落地的方案则是要通过架构设计和框架选择上来进行。架构是为了控制软件复杂性而做,就好像『一千个读者心中有一千个哈姆雷特』,不同人做架构不尽相同。下面说说我的落地方式。

阅读全文 »

领域驱动设计核心概念

领域驱动设计学习拦路虎之一就是众多的概念,第一次接触这些概念会有一定的理解成本,不过正是这些概念支撑起的领域驱动设计,接下来会以电商为例对其中的核心概念做介绍。

阅读全文 »

概述

概念可以简单描述某类事物,这类事物可以是实体也可以是问题。领域驱动设计是为了管理系统复杂性问题而生的一套方法论。

随着业务系统的复杂性不断提高,系统的性能和灵活性要求也会越来越高,如何构建一个扩展性强、可用性高的业务系统是需要我们不断思考的问题。

我们以交易系统为例,在互联网之初,实体商业占据绝对主导地位的时代,电子商务系统最初的目的就是把货物卖出去,业务需求很简单,就是一手付钱,一手交货,而更多的难点是在于如何让人们接受并认可在网络上进行交易。随着这几十年的发展,电商早已不是最初的样子,需求变为如何更快更多的把商品卖出去,于是产生出了层出不穷你算不清楚的促销活动,比如满减、凑单、会员价、拼团、优惠券等。你买东西的价格也许只有系统能真正算清楚。

系统的复杂性比起最初,呈几何倍的增长,如何控制并管理系统复杂度是我们需要在业务发展过程中需要解决的问题。复杂的业务各有各的复杂,而拆解之道也各有各的侧重,今天要介绍的是领域驱动设计如何帮助我们拆解需求,并建立一个灵活性高、可扩展的业务系统。

阅读全文 »

在加乌拉山口拍珠峰,这里可以一眼望尽五座八千米高山。

旅行是为了什么?有的人是为了好吃好玩,有的人是为了看风景。我就是后者,如果你喜欢游览祖国广袤的山川河流,看尽一望无际的高原雪山,那么你一定要来趟西藏,看看还是那么相对纯粹的自然风光。

去西藏的计划是从八月推迟到了十一黄金周,不过今年西藏的十一却少了往日的火爆,人不是那么多,主要还是因为前一段事件疫情的影响,所以路上的体验都还不错。

全国除了西藏都是可以想去就去的,而西藏是需要好好准备一下的,为此也踩了一些坑。就拿抗高反来说吧,去之前你需要做的是好好休息,减少运动量就可以了,不用喝什么红景天、高原康之类的,作用不大。在高原防止高反只需要做到以下几点即可:

  1. 晚上保证充足的睡眠。
  2. 多吃高热量实物来保障能量供应。
  3. 放平心态,不要有心理压力。
  4. 到高原先缓两天再安排行程。

刚去的前几天高反加水土不服,在羊卓雍措的湖边住房车,大半夜的跑到车外吐了好几次,第二天买了藿香正气就好了,然后就是听司机的话,觉得不舒服就喝点葡萄糖,确实很有效。

到了西藏,面对壮阔的雪山群,纯净的圣湖,当然要留下一些回忆。

在海拔 5200 米的珠峰大本营,珠峰山顶总被云雾缠绕着,能近距离的看到很难得。

羊卓雍措是西藏的三大圣湖之一,从山上看下去,湖水呈靛青色,就跟染料一般纯净,和其它湖水的蓝很不一样。

纳木错也是西藏的三大圣湖之一,蓝色湖水对面的雪山就是念青唐古拉山脉。

在西藏还有一点独特的体验就是看星空,与平原不同地是这里的高海拔,使得星空银河非常清晰明显,你会看到银河从地上的一端穿过天空扎向另一端。站在山顶的那一刻我终于体会到儿时的一句话『天空是一块幕布,星星和月亮就是装饰这块幕布的花纹。』望着繁星与银河,感觉到自己渺小,如这沧海中的一粟。

西藏之旅还有很多有意思的故事与见闻,虽然这篇文章鸽了这么久,但是我还是不想再去讲了。总之这是一场头疼并快乐的旅途~