MySQL 基本功
插件式架构 MySQL的插件式架构.xmind 索引问题 索引的出现是为了减少单一维度查询时,搜索数据的成本。 索引的基础架构 索引的分类 不同的存储引擎支持不同的索引数据结构。 MySQL 支持的索引类型至少包括:BTree索引、Hash索引、full-text全文检索、R-Tree索引。 Innodb 支持的索引数据结构只有 B+树。 B+树索引 B 树扩充了二叉平衡树,让每个节点能够存储的数据大大提升。 B+ 树从 B 树演变而来,B 树每个节点都存储数据,但高度高,只有查找离根节点近的数据的速度是快的;B+树所有数据都存储在叶子节点,所以查询到特定的数据必须走完查询路径,也因此 B+树的查找速度稳定,遍历全部数据和范围查找的算法稳定(不用上溯下钻)。两种数据结构,各有所长。 B+树的每个节点可以被认为是一个磁盘块(block)-可以认为 MySQL 的磁盘块等同于 OS 的数据页,大小通常为 4k/8k/16k。磁盘块通常是双层的,第一层表示存储的数据项(data entry),第二层表示指向子节点的指针(pointer)。但 B+树本身只有叶子节点真实数据,非叶子节...
六顶思考帽
六顶思考帽®是爱德华·德博诺博士开发的一种思维训练工具,它提供了“平行思维”的工具,全面思考问题的模型,避免将时间浪费在互相争执上。 人们参加会议都是抱着解决问题的共同目的而来的,然而发生争吵很多时候吵的并不是事实,而是情绪。人们总是还未真正理解对方的观点就陷入了和对方喋喋不休的争执之中。 所谓“六顶思考帽”是指蓝帽(指挥帽)、白帽(数据帽)、红帽(情感帽)、黄帽(乐观帽)、黑帽(谨慎帽)、绿帽(创新帽)。 六顶思考帽®是爱德华·德博诺博士开发的一种思维训练工具,它是目前全球最有影响力的创新思维训练课程。它提供了“平行思维”的工具,避免将时间浪费在互相争执上。强调的是“能够成为什么”,而非 “本身是什么”,是寻求一条向前发展的路,而不是争论谁对谁错。运用德博诺的六顶思考帽,将会使混乱的思考变得更清晰,使团体中无意义的争论变成集思广益的创造,使每个人变得富有创造性。它运用于会议管理,团队沟通,流程改进,产品研发/设计,制定决策,解决问题和领导力提升等领域。大部分世界500强企业学习使用过六顶思考帽后,都认为六帽帮助他们大大提高了工作效率,并且使会议时间减少了50%。自1984年被发...
代码大全
第 1 章 欢迎进入软件构建的世界 第 2 章 用隐喻来更充分地理解软件开发 第 3 章 三思而后行:前期准备 第 4 章 关键的“构建决策” 第 5 章 软件构建中的设计 第 6 章 可以工作的类 第 7 章 高质量的子程序 第 8 章 防御式编程 第 9 章 伪代码编程过程 第 10 章 使用变量的一般事项 第 11 章 变量名的力量 第 12 章 基本数据类型 第 13 章 不常见的数据类型 第 14 章 组织直线型代码 第 15 章 使用条件语句 第 16 章 控制循环 第 17 章 不常见的控制结构 第 18 章 表驱动法 第 19 章 一般控制问题 第 20 章 软件质量概述 第 21 章 协同构建 第 22 章 开发者测试 第 23 章 调试 第 24 章 重构 第 25 章 代码调整策略 第 26 章 代码调整技术 第 27 章 程序规模对构建的影响 第 28 章 管理构建 第 29 章 集成 第 30 章 编程工具 第 31 章 布局与风格 第 32 章 自说明代码 第 33 章 个人性格 第 34 章 软件工艺的话题 第 35 章 何处有更多的信息
JUnit4/JUnit5 注解
junit4 junit5 特点 @BeforeClass @BeforeAll 在当前类的所有测试方法之前执行。注解在【静态方法】上。 @AfterClass @AfterAll 在当前类中的所有测试方法之后执行。注解在【静态方法】上。 @Before @BeforeEach 在每个测试方法之前执行。注解在【非静态方法】上。 @After @AfterEach 在每个测试方法之后执行。注解在【非静态方法】上。
彩色 UML 建模
理论基础与来源 彩色 UML 建模(也称为四色模型)是由 Peter Coad、Eric Lefebvre 和 Jeff De Luca 在经典著作《Java Modeling in Color with UML》中提出的领域建模方法。该方法通过四种颜色区分不同类型的域对象,帮助开发人员更好地理解和设计业务领域模型。 四色模型的核心思想是将领域对象分为四种架构型(Archetype),每种架构型用不同的颜色表示: 粉色(Moment-Interval):表示业务过程中发生的某个时刻或时段 黄色(Role):表示参与方在特定时刻时段中扮演的角色 绿色(Party-Place-Thing):表示参与方、地点和事物 蓝色(Description):表示描述性信息,通常是可重用的数据 四色模型与 DDD 的关系 四色模型与领域驱动设计(Domain-Driven Design,DDD)有很强的关联性: 关注领域本质:两者都强调深入理解业务领域,建立符合业务语义的模型 限界上下文:四色模型的彩色分类可以帮助识别和定义限界上下文 聚合根:粉色 MI 通常对应聚合根,负责维护业务不变性 ...
IPv6 问题
背景 IPv4 地址枯竭 5G、IOT、SDN/NFV、云计算、边缘计算等新兴技术兴起,需要地址的终端设备变多。 NAT 技术无法支持新兴技术。 各大互联网公(国外的Google、AWS、Apple,国内的阿里、滴滴等公司)司要定期推动本公司业务的 ipv6 技术改造,网信办会定期检查,不达标的公司要问责。 改造要点 因为IP地址长度从32位变为128,文本格式从十进制数字变为十六进制(见附录1),为支持两种IP地址,包括但不限于以下改造要点: 客户端(手机APP和浏览器)缓存用户IP 后端服务根据IP做判断的业务逻辑, 比如set化、小流量。 用户IP归属地查询。 用户IP白名单、黑名单。 风控使用到IP段的策略。 存储用户IP到DB或者缓存 IPv4是32位,可以转成int或者long来存储。 IPv6是128位,不能使用long或者bigint来计算存储。 在服务接口之间传递用户IP 内网之间传递,典型的是支付、风控等。 外网之间传递,如第三方微信支付等。 日志处理 后端日志落地为IPv6后,是否有通过日志内容处理的业务逻辑。 依赖ngin...
亚马逊工作方法
一、亚马逊14条领导力原则 我们的领导力准则不仅仅是非常鼓舞人心的墙帷。这些准则十分有效,就像我们努力工作所取得的成果一样。无论是在讨论新项目的创意、决定应对客户问题的最佳解决方案,还是对求职者进行面试,亚马逊人每天都在使用这些准则。这是令亚马逊独具特色的一个重要因素。 顾客至尚(Customer Obsession)领导者从客户入手,再反向推动工作。他们努力地工作以赢得并维系客户对他们的信任。虽然领导者会关注竞争对手,但是他们更关注客户。 主人翁精神(Ownership)领导者是主人翁。他们会从长远考虑,不会为了短期业绩而牺牲长期价值。他们不仅仅代表自己的团队,而且代表整个公司行事。他们绝不会说“那不是我的工作”。 创新简化(Invent and Simplify)领导者期望并要求自己的团队进行创新和发明,并始终寻求使工作简化的方法。他们了解外界动态,从各处寻找新的创意,并且不局限于“非我发明”的观念。 当我们开展新事物时,我们要接受被长期误解的可能。 决策正确(Are Right, A Lot)领导者在大多数情况下都能做出正确的决定。他们拥有卓越的业务判断能力...
微服务相关文献
《提升团队的微服务落地能力》
部署环境
列举环境 根据 wikipedia,工业界总是把开发环境和生产环境分离出来,中间还有若干个 stages。 结构化的发布管理允许分阶段部署(rollout),测试和在遇到问题时回滚(rollback)。 常见的环境有: 4-tier architecture is development, testing, model, production (DEV, TEST, MODL, PROD), Quality Control (QC), for acceptance testing; sandbox or experimental (EXP) Another common architecture is development, testing, acceptance and production (DTAP) Development 构造对软件的变动的环境,大多数情况下仅仅是开发者的工作站(workstation)。在这个环境里实验变更和进行单元测试。集成环境有时候也可以被认为是开发环境,在集成环境里专门对 repo 里的源代码 copy 进行构建和单元测试。 T...
如何做全链路压测
性能测试 压测问题.xmind 性能测试的必要性 营销活动周期 首先引入一个营销活动周期的概念,它是一个闭环流程: PS:1和2之间再加一个步骤。环境改造和基础数据准备。强调必须在生产环境。 压测环境准备:需要复用真实的线上环境,压测结果和问题暴露才都是最真实情况。可通过压测流量全局识别、透传(数据进入影子区域)。 基础数据准备:以电商场景为例,构造满足大促场景的核心基础相关数据(如买家、卖家、商品信息),以线上数据为数据源,进行采样、过滤、脱敏,并保持同等量级。 阿里实际上是 2013 年才开始做全链路压测的,现在的压测周期更加智能化。可以在白天由几个人值守进行,包含以下活动: 压测环境改造 整个阿里经济体的压测环境,包括双十一压测,全部选择的是线上环境,此时需要评估: 如果要进行全链路压测,是否直接可以使用现有环境。 同一个API多次压测是否会被拦截-容易被忽略。 是否会有脏数据影响、如果有影响应该如何改造避免-必须进行的改造项目:1 识别+ 透传流量标,2 构造影子数据区域。 以上这些问题总结下来即为两类问题:业务问题和数据传递问题。问题比较明确,我们就根据...






