常见架构推导法
架构演进之路,路漫漫其修远兮架构关乎不变的顶层设计抽象。架构关乎组件(元素)、交互(连接器)、功能(function or feature)、约束(constraint 面向当前、未来-下一场景、下一个规模、下一个地域或国家)
洋葱架构的另一种解读系统是洋葱,看似有边界,但是每次改动总是端到端,过程让⼈人泪流满⾯面。
系统的本质功能与质量量的结合体:功能是核心价值 + 质量实现增值或保值。
系统的复杂性过程与过程数据过程与过程数据.drawio
易变性系统复杂度.drawio
系统复杂度 = 功能的数量 * 功能的过程《人月神话》:本质复杂度(Essential Complexity)和偶然复杂度(Accident Complexity)。
解法分离业务复杂度和系统复杂度。
回归面向对象的本质,重拾抽象思维的价值维护效率曲线.drawio三种编程范型.drawio
领域驱动设计战略设计领域驱动设计-战略设计-一般过程.drawio
需求分析需求分析.xmind
词汇提取知识提取.drawio
领域语⾔定义-合理的上下⽂和领域划分顺序-时间-追溯需求建模.drawio合理的上下文和领域划 ...
Gergely Orosz 文章翻译-成为一个更好的技术写作者
原文链接:《Becoming a Better Writer in Tech》
演进式架构
如果读一本书,没有附带正确的复盘(提出反馈并总结反馈),则浪费了这次读书的完整机会。
复盘需要经过痛苦的思索,把一些之前自己没有办法充分接受的观点,充分接受。
本书是一本讲战略的书。
这本书告诉我们很多概念,一旦加上“架构”前缀,突然就有了特殊的含义:架构特征(architectural feature)、架构量子(architectural quantum)、架构维度(architectural dimension)、架构模式(architectural pattern)。
新时代的架构愿景-怎样用敏捷的方式来拥抱变化?架构难以被修改是由架构本身的不变性决定的,架构天然就是难以修改的。
有些人可能认为,就好像建筑业的实践那样,应该先完成这类架构设计,再开始开发。但需求是快速变动的这一事实告诉我们,我们可能要经常修改我们架构,以拥抱需求变化。
“需求总是在动态变化的”,比“架构应该是被预先确定”,更加像是一个事实(后者更加像是一个观点)。
当代的架构是:
不断努力的结果
【能够响应不断变化的需求和外部人员的反馈】
实施这种架构以替代传统架构,是需要决策者(技术领导者或者架构师)展现 ...
Gergely Orosz 文章翻译-软件架构被高估,简明设计被低估
原文链接:《Software Architecture is Overrated, Clear and Simple Design is Underrated》
面向职场编程
学习的衰减和回归
读了 100 分的书籍。
只能学会 80 分的知识。
做出 60 分的软件。
参加多人协同的项目,最后只能拿到 40 分的产出。
去参加晋升评审的时候,因为讲得不够好,只能得到 20 分的输出效果
提升自己的职场收获的法门有:在 1 上加大努力,让 5 也跟随 1 增长;练习 soft skill,让 4 和 5 的衰减变少。
不闻不若闻之,闻之不若见之,见之不若知之,知之不若行之。没有输入,谈不上学习;没有复制,谈不上学习;没有创造与运用,谈不上学习。学习就好像爬喜马拉雅山,你从北坡上山,要从南坡下山,你体会的山才完整,没有体会过知识的接受者视角和使用者视角的经历的是不完整的。
上士闻道,勤而行之;中士闻道,若存若亡;下士闻道,大笑之。
不笑不足以为道。
故建言有之:明道若昧;进道若退;夷道若颣;上德若谷,大白若辱,广德若不足,建德若偷,质真若渝;大方无隅;大器晚成;大音希声;大象无形。
道隐无名。
夫唯道,善始且善成。
从信仰者成为践行者。
职位的 max 和 min不要让评委进入 min 模式,那样评委很容易成为你的挑战者。不要让评委进入攻击者模式。
引导评 ...
贝索斯在普林斯顿大学毕业典礼上的演讲-We are What We Choose
原文链接:《2010 Baccalaureate Remarks》
小时候,我经常到外公外婆家的德州牧场过暑假,帮忙修理风车、帮牛打疫苗、做些杂活。每天下午,我们还会在一起看电视连续剧。
外公和外婆是我挚爱、崇拜的两位老人。他们都是露营拖车俱乐部的会员,这是一群由Airstream露营车车主组成的车队,车队成员定期结伴在美国、加拿大到处旅游。我们每隔几年参加一趟,直接把路用车挂在外公的车子后面,就上路了。三百多辆拖车连成一线,非常壮观。
其中一次,大约在我10岁时。一路上,我都在车子的后座上随意打滚。外公在开车,外婆坐在他旁边,不停地抽着烟。而我很讨厌香烟的味道。
那个年纪的我,只有有机会就喜欢算来算去,做些简单的加减乘除练习。比如,估算汽油的行驶里程数,或者计算买东西花了多少钱。
抽一口烟,短命两分钟
当年,有个警告抽烟的广告,我已经忘了细节,只记得大意是说,你只要抽一口烟,就会减少几分钟的寿命,好像是两分钟吧。那天,我决定帮外婆算算看:她每天抽多少根烟、每根烟要抽几口等等。
最后,我很满意地算出来一个差不多的数字,把头伸到车子前座,拍了拍外婆的肩膀,很得意地说:“如果抽一口烟会缩短 ...
如何成为一名优秀的架构师
成为一个架构师:为了这一刻,你准备了多久?
架构师的关注点:顶层设计、长期视角。
寿命:数据 > 代码(特指业务逻辑)> 技术(特指业务逻辑的载体)
不是传道受业,而是观点分享。
架构师的几种 profile:有架构能力、以架构为生也是一种架构师。
长期战略:对于任何一家公司,架构设计一定是必要的,而且需要自行解决。架构师的职责是保证组织拥有正确的设计,控制复杂度。
架构师的关键特质:
目标正确:限制条件和目标价值产生理解偏差。是架构师最常见的问题。
能力满足:为组织带来更好的外部适应性。
持续减熵:好架构等于发现、规划和演化。
思考深度和实战经验最重要:这是任何的书本都不能带给我们的。包容、求真、良知、勇气。
有没有德?考虑组织长期利益(基于良知做判断)。有没有勇气?承担责任,决定命运。有没有眼光?是否擅于思考?
独立、理性、有深度的思考。长期感召力,来自于良知、成功、经验和勇气。
从复盘中学习。
郭东白.pdf
项目管理
比起重要紧急排序法,MoSCow优先级排序法更适用FORM:https://www.jianshu.com/p/f165dff094bb
Must have:必须有。如果不包含,则产品不可行。Must Have的功能,通常就是最小可行产品(MVP)的功能。比如微信的聊天信息、通讯录、朋友圈。
Should have: 应该有。这些功能很重要,但不是必需的。虽然’应该有’的要求与’必须有’一样重要,但它们通常可以用另一种方式来代替,去满足客户要求。
Could have: 可以有。 这些要求是客户期望的,但不是必需的。可以提高用户体验,或提高客户满意度。如果时间充足,资源允许,通常会包括这些功能。但如果交货时间紧张,通常现阶段不会做,会挪到下一阶段做。
Won’t have(nice to have): 这次不会有。 最不重要,最低回报项目,或在当下是不适合的要求。不会被计划到当前交货计划中。 “不会有”会被要求删除,或重新考虑。
总的来说,”这次不会有”在项目讨论阶段,就会被去除。所有要求看上去都很重要,但是如果交货时间紧,“”可以有”将第一批被删除,”应该有”紧随其后。
...
职场求生攻略
职场求生攻略.xmind
Redis 笔记之:内存调优
Redis 的 memory infoRedis 的内存使用状况可以使用info memory来获取。
需要重点关注的值是
used_memory_rss(用于存储消耗的物理内存),used_memory(用于存储消耗的内存= 物理内存 + 硬盘),以及他们的比值mem_fragmentation_ratio(used_memory_rss/used_memory)。
used_memory_rss或者used_memory很高时,意味着当前的 Redis 实例正在蚕食系统中的内存/硬盘资源。
当这个mem_fragmentation_ratio大于 1 的时候,意味着用于存储消耗的物理内存超过了 Redis 自己掌控的内存值,也就意味着当前有些未能回收的内存泄漏或者碎片。
当这个mem_fragmentation_ratio小于 1 的时候,这意味着有一部分用于存储的内存,实际上是在使用虚拟内存中的 swap 空间,此时 Redis 的性能会非常差。
Redis 的内存轮廓memory_used = 进程自身消耗的内存 + 存储对象的内存(大头) + buffer 内存
memory ...