架构整洁之道书摘七——设计原则

SOLID 原则 SRP:单一职责原则。 该设计原则是基于康威定律(Conway’s Law)[1]的一个推论——一个软件系统的最佳结构高度依赖于开发这个系统的组织的内部结构。这样,每个软件模块都有且只有

架构整洁之道书摘四——结构化编程

科学方法论不需要证明某条结论是正确的,只需要想办法证明它是错误的。如果某个结论经过一定的努力无法证伪,我们则认为它在当下是足够正确的。 我们的程序也是如此,我们不能证明我们的代码是绝对正确的,而是做各种

架构整洁之道书摘三——编程范式

编程范式指的是程序的编写模式,与具体的编程语言关系相对较小。这些范式会告诉你应该在什么时候采用什么样的代码结构。 目前也只有三个编程范式: 它们分别是结构化编程(structured programming

架构整洁之道书摘二

对于每个软件系统,我们都可以通过行为和架构两个维度来体现它的实际价值。软件研发人员应该确保自己的系统在这两个维度上的实际价值都能长时间维持在很高的状态 大部分程序员认为这就是他们的全部工作。他们的工作是

架构整洁之道书摘一

架构是什么 按照Bob大叔的说法,所谓架构就是“用最小的人力成本来满足构建和维护系统需求”的设计行为。 所谓软件架构,就是你希望在项目一开始就能做对,但是却不一定能够做得对的决策的集合。 从人力成本的角度来

mysql中的查询缓存

当查询命中缓存时,立即返回结果。跳过了解析 优化和执行阶段 鸡肋 查询缓存在大部分时候都很鸡肋, 在 5.8 版本已经将查询缓存去掉了 下面几个特性是它鸡肋的证据: 什么时候不会被缓存 查询涉及的相关表数据发生变化时 查询缓

基准测试

基准测试 http_load 可以通过一个输入文件提供多个 URL,Hpttp_load 在这些 URL 中随机选择进行测试。 也可以定制 axtp_1oad,使其按照时间比率进行测试,而不仅仅是测试最大请求处理 下面通过一个简单的例子来

mysql中的字符集

什么是字符集,什么是排序规则 字符集是只从二进制编码到某类字符符号的映射,该字符集的排序规则简称校对, 如 ASCII码,一个字节就可以表示一个英文字母,参照ASCII码表 为什么需要字符集 因为人类无法直接理

最长无重复子串

第一种 设置一个滑动窗口,左下标记 l, 右下标记r r 向右移动,记录每个字符的最后一次出现的位置 m 如果当前字符在 m 中存在,并且重复字符出现的位置在l右侧,让l移动到重复字符的下一个位置,跳过重复的字符 r每次

MySQL外键约束

InnoDB 是MySQL中唯一支持外键约束的内置引擎 缺点 多一次查询 在每次修改数据时,都要在另外一张表执行一次查询操作,如果外键列的选择性很低,会导致存在一个很大但是选择性很低的索引。 比如在一个很大的users表

MySQL Integer类型与INT(11)

1.介绍 Integer类型,即整数类型,MySQL支持的整数类型有TINYINT、SMALLINT、MEDIUMINT、INT、BIGINT。 1.1 空间和范围 每种整数类型所需的存储空间和范围如下: 2. INT(11) 2.1 数

异步任务中的错误传递

并发编程下,如何将goroutine中发生的错误传递给其他程序,从而进行优雅的处理呢, 一种解决方案是,将异步任务中产生的错误写入通道中,在另一个程序中读取该通道,从而实现通信,二次处理错误信息 例子 package main

通道流水线工作模式

一个通道的输出,作为下一个通道的输入,连绵不绝 下面实现了加法 乘法的流水线 // 流水线通道 package main import "fmt" func main() { done := make(chan interface{}) defer close(done) // 数据源 numStream := generate(done, 1, 2, 3, 4, 5) // 乘法 加法 乘法 pipeline := multi(done, add(done, multi(done, numStream, 2), 1), 2) for num := range pipeline { fmt.Println(num) } } // 接收一个中止信