设计模式
1. 单一职责 类的职责单一,对外只提供一个功能,而引起类变化的原因都应该只有一个。 2. 开闭 类的改动是通过增加代码进行的,而不是修改源代码。 3. 里氏代换原则 任何抽象类出现的地方都可以用他的实现类替换,实际就是虚拟机制,语言级别实现面向对象功能。 4. 依赖倒转原则 依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程。
1. 单一职责 类的职责单一,对外只提供一个功能,而引起类变化的原因都应该只有一个。 2. 开闭 类的改动是通过增加代码进行的,而不是修改源代码。 3. 里氏代换原则 任何抽象类出现的地方都可以用他的实现类替换,实际就是虚拟机制,语言级别实现面向对象功能。 4. 依赖倒转原则 依赖于抽象接口,不要依赖具体的实现类,也就是针对接口编程。
Gitbook与Docker 最近在学习k8s容器相关,了解了docker的优势,而本身对于特别在意环境的干净,之前的Gitbook不想安装原因,是因为要安装node等信息。借此机会尝试下使用docker进行安装。 1. Docker安装 这个比较简单,直接官网下载安装,无异常 2. docker-compose 编写 # 在对应的目录下创建compose的yaml文件,我放在`Workspaces/Docker/GitBook`下 services: gitbook: image: bloodstar/gitbook-builder ports: - "4000:4000" volumes: - ./gitbook:/gitbook command: gitbook build 由于我只是使用gitbook的build,不需要serve,所以端口无所谓 3.command命令修改 3.1 初始化 修改command命令为gitbook init 3.2 插件安装 修改command命令为gitbook install,这中间会存在异常,主要是网络连接github会有一定问题 3.3 编译 修改command命令为gitbook build 4. 异常处理 4.1 初始化失败 直接建README.md SUMMARY.md 两个文件后 4.2 插件安装失败 需要特殊渠道,让服务可以可以访问 5. 部署 使用nginx做代理,直接root指向Workspaces/Docker/GitBook/gitbook/_book目录 到对应的目录夹下,运行命令docker-compose up -d
ClickHouse 官网:clickhouse.com 学习资料:谷粒 核心要点: MergeTree引擎 OrderBy是主键 分布式 Explain 参数配置 语法规则 多表联查(join) 面试题 1.不支持真正的delete/update操作,不支持transactions(事物) OLAP引擎一般都不支持事物,ClickHouse的定位也是分析性数据库,而不是严格的关系型数据库,加入对于事物的支持, 必然会有锁,同时分布式事物的支持,会带来更复杂的实现,其中诸多因素,都会影响写入和查询的性能。 2.不支持高并发查询,官方建议100 QPS ClickHouse是并行计算,单个查询就可以跑满多个CPU核心,而不像MySQL单个查询单线程执行。 3.需要批量写入,频繁的单条写入会带来写入问题 ClickHouse存储结构有点类LSM,每次的insert基本都会生成一个文件目录,后台线程Merge目录文件,如果频繁写入, 后台线程就会Merge不过来,产生`Too many parts`异常。建议每秒不超过一次写入,并且是Batch写入。 4.有限的SQL语法支持,JOIN语法也比较另类,暂时不支持窗口函数 5.稀疏索引的设计使得ClickHouse不适合做单行点查询
Copy From: awesome-architecture 分布式 分布式架构链路追踪:SkyWalking 介绍 漫谈分布式系统 (20):基于规则的优化 架构设计:分布式服务,库表拆分模式详解 走出微服务误区:避免从单体到分布式单体 熬夜之作:一文带你了解 Cat 分布式监控 初识 etcd 分布式场景下基于重试机制的一致性解决方案 一文读懂 HDFS 架构与设计 MIT 6.824 分布式系统课程第六课之错误容忍:Raft(一) 漫谈分布式事务的那些解决方案 我司用了 6 年的 Redis 分布式限流器,可以说是非常厉害了 架构设计基础:单服务、集群、分布式的基本区别和联系 用匠心精神,打造高可用分布式系统 MIT 6.824 分布式系统课程第四课:主备复制 面试被问分布式事务(2PC、3PC、TCC),这样解释没毛病 MIT 6.824 分布式系统课程第三课:GFS 分布式定时任务调度框架实践 MIT 6.824 分布式系统课程第一课:介绍笔记 2019 我的技术之路:分布式系统到分布式制造 分布式 ID 生成方案 Filebeat + Kafka + ELK 分布式日志收集 [译] 一切系统都是分布式的 (OReilly, 2015) SOSP19’ Ceph 的十年经验总结:文件系统是否适合做分布式文件系统的后端 如果有人再问你怎么实现分布式延时消息,这篇文章丢给他 中间件底层实现的分布式协议之 Raft 在分布式链路下,蚂蚁金服如何快速构建低成本、高可用联调环境? 解耦并不难:分布式系统中的解耦 分布式唯一 ID 之 Snowflake 算法 漫谈分布式系统(一):为什么要有分布式系统 技术中台:分布式架构在蚂蚁金服的实践 图解各路分布式 ID 生成算法 ElasticDL:蚂蚁金服开源基于 TensorFlow 的弹性分布式深度学习系统 逻辑时钟:如何刻画分布式中的事件顺序 线性一致性实现原理剖析 XSQL:低门槛、易部署、更稳定的多数据源分布式查询引擎 分布式消息系统设计要点 React Native 分布式热更新系统 端到端一致性,流系统 Spark/Flink/Kafka/DataFlow 对比总结 盘点 Zookeeper 在分布式架构中的应用 [译] 分布式系统经典论文:Google Bigtable 的设计和实现 (OSDI 2006) [译] 分布式系统经典论文:Amazon Dynamo 的设计和实现 (SOSP 2007) Apollo 配置中心:分布式部署 分布式系统原理介绍 高并发场景下分布式实时信令系统的架构实践 8 个月打磨,一份送给程序员的 “分布式系统” 合集 分布式系统关注点:360° 的全方位监控 设计一个分布式 RPC 框架 分布式时序数据库 QTSDB 的设计与实现 轻松构建微服务之分布式配置中心 分布式系统关注点:构建易测试系统的 “六脉神剑” 个推基于 Zipkin 的分布式链路追踪实践 MXNet 结合 kubeflow 进行分布式训练 分布式数据缓存中的一致性哈希算法 聊一聊分布式对象存储解决方案 分布式系统关注点:阻塞与非阻塞有什么区别? UidGenerator:百度开源的分布式 ID 服务 如何设计一个优秀的分布式系统? 分布式 ID 生成策略 从一个真实的分布式 ID 案例看如何做架构 近万字长文,设计分布式系统需要考虑因素的都在这里 分布式 TensorFlow 编程模型演进 基于 Redis 和 Lua 的分布式限流 Aloha:一个分布式调度框架的设计与实现 可线性化检查:与 NP 完全问题做斗争 分布式架构设计之架构演进之路 分布式系统设计经典论文 Leaf:美团分布式 ID 生成服务开源 宜信分布式安全服务编排实践 xxl-registry:轻量级分布式服务注册中心 CAP 一致性协议及应用实践 分布式系统关注点:弹性架构 Etcd Raft 使用入门及原理解析 滴滴开源分布式消息中间件产品 DDMQ 企业实施分布式架构的挑战以及应对建议 云端分布式架构下的编程语言:elixir; pattern matching 让 Raft 变快 100 倍:Dragonboat 的写优化 GMKV:分布式 kv 在更美 App 的落地 基于 Licode 的 WebRTC 全球分布式架构 手绘 raft 一致性算法 kingbus:基于 Raft 的分布式 MySQL binlog 存储系统 为自己搭建一个分布式 IM(即时通讯)系统 分布式系统的基石:深入浅出共识算法 [译] 伯克利开源多数据流实时分布式分析系统 Confluo,吞吐超 Kafka 4-10 倍 Ambry:LinkedIn 对象存储论文翻译 Go 分布式实时服务架构 自己写分布式配置中心(上):单机模式 唯品会分布式强一致日志存储系统 VDL 正式对外开源 浅谈分布式最终一致性 MIT 6....
阅读准备参考:https://www.jianshu.com/p/e739afb8fe31 需要导入模块:需要将mybatis-parent模块导入。mybatis-parent模块链接 https://github.com/mybatis/parent 1.兵马未动,日志先行 org.apache.ibatis.logging org.apache.ibatis.logging.commons org.apache.ibatis.logging.jdbc org.apache.ibatis.logging.jdk14 org.apache.ibatis.logging.log4j org.apache.ibatis.logging.log4j2 org.apache.ibatis.logging.nologging org.apache.ibatis.logging.slf4j org.apache.ibatis.logging.stdout 对象适配器设计模式 设计模式可参考http://www.cnblogs.com/liuling/archive/2013/04/12/adapter.html 2.异常 org.apache.ibatis.exceptions 3.缓存 org.apache.ibatis.cache org.apache.ibatis.cache.decorators org.apache.ibatis.cache.impl 4.解析 org.apache.ibatis.parsing xml解析,${} 格式的字符串解析 源码分析可以参考http://www.cnblogs.com/sunzhenchao/p/3161093.html 5.类型处理器 org.apache.ibatis.type 实现java和jdbc中的类型之间转换 源码分析可以参考http://www.cnblogs.com/sunzhenchao/archive/2013/04/09/3009431.html 6.IO org.apache.ibatis.io 通过类加载器在jar包中寻找一个package下满足条件(比如某个接口的子类)的所有类 7.反射 org.apache.ibatis.reflection org.apache.ibatis.reflection.factory org.apache.ibatis.reflection.invoker org.apache.ibatis.reflection.property org.apache.ibatis.reflection.wrapper 可以参考MetaObjectTest来跟踪调试,基本上用到了reflection包下所有的类 8.数据源 org.apache.ibatis.datasource org.apache.ibatis.datasource.jndi org.apache.ibatis.datasource.pooled org.apache.ibatis.datasource.unpooled 9.事务 org.apache.ibatis.transaction org.apache.ibatis.transaction.jdbc org.apache.ibatis.transaction.managed 10.会话 org.apache.ibatis.session org.apache.ibatis.session.defaults 11.jdbc单元测试工具 org.apache.ibatis.jdbc 12.构建 org.apache.ibatis.builder org.apache.ibatis.builder.annotation org.apache.ibatis.builder.xml 13.映射 org.apache.ibatis.mapping 14.脚本 org.apache.ibatis.scripting org.apache.ibatis.scripting.defaults org.apache.ibatis.scripting.xmltags 15.注解 org.apache.ibatis.annotations 16.绑定 org.apache.ibatis.binding 17.执行器 org.apache.ibatis.executor org....