Maven 的依赖管理
Maven 的配置和依赖是单根继承的Maven 的模块继承是无法进行多继承的,只能使用单根继承。 Maven 中 dependencies 与 dependencyManagement 的区别dependencies 即使在子项目中不写该依赖项,那么子项目仍然会从父项目中继承该依赖项(全部继承) dependencyManagement 里只是声明依赖和它们的版本,并不实现引入,因此子项目需要显示的声明需要用的依赖。如果不在子项目中声明依赖,是不会从父项目中继承下来的;只有在子项目中写了该依赖项,并且没有指定具体版本,才会从父项目中继承该项,并且 version 和 scope 都读取自父 pom; 另外如果子项目中指定了版本号,那么会使用子项目中指定的jar版本。 有效 pom123mvn help:effective-pom > effective-pom.xml# 获取某个指定 artifact 的依赖树 mvn dependency:tree -Dverbose...
MyISAM 和 InnoDB 的区别
参考:https://www.zhihu.com/question/20596402 区别: InnoDB 支持事务,MyISAM 不支持事务。这是 MySQL 将默认存储引擎从 MyISAM 变成 InnoDB 的重要原因之一; InnoDB 支持外键,而 MyISAM 不支持。对一个包含外键的 InnoDB 表转为 MYISAM 会失败; InnoDB 是聚集索引,MyISAM 是非聚集索引。聚簇索引的文件存放在主键索引的叶子节点上,因此 InnoDB 必须要有主键,通过主键索引效率很高。但是辅助索引需要两次查询,先查询到主键,然后再通过主键查询到数据。因此,主键不应该过大,因为主键太大,其他索引也都会很大。而 MyISAM 是非聚集索引,数据文件是分离的,索引保存的是数据文件的指针。主键索引和辅助索引是独立的。 InnoDB 不保存表的具体行数,执行 select count(*) from table 时需要全表扫描。而MyISAM 用一个变量保存了整个表的行数,执行上述语句时只需要读出该变量即可,速度很快; InnoDB...
代码大全
第 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 建模
常见的例子 MomentInterval:订单、消费、事务、退款申请 Role:购买对象、供应商、购买人、服务提供商、消费者(这些东西更偏向于元数据)、审核方、发起方。role 按照原书而言是 person 可以 associate 的一些角色,person 可以根据 role 进行一些 action。RBAC 体系即这一思想的实践。保险的干系人在元数据的设定上也是一种role。 PartyPlaceThing:Role 的具体实现:投保人、被保人、用户、商家、产品、客服。注意,这一类型几乎穷尽了所有的领域实体,也包括各种 person。 Description:订单的附属对象:消费码、数量、联系⼈、游玩人;用户的附属对象:用户 ID;商家的附属对象:商家 ID、商家名称;产品的附属对象:产品名称、产品价格、产品 ID;退款申请的附属对象:场景金额原因 架构型、彩色和领域无关的组件四色模型.xmind 架构型构造型即 stereotype,架构型即...
git 难点知识汇总
初始化命令配置用户、remote 和 branch123456789101112131415161718192021222324252627282930313233343536git config --global user.name "magicliang" # 请换成你自己的名字git config --global user.email "magicliang@qq.com" # 请换成你自己的邮箱git config --global push.default simple # 我们要求 Git 版本 1.9.5 以上git config --global core.autocrlf false # 让Git不要管Windows/Unix换行符转换的事git config --global --listssh git@gitlab.abcgit initgit add .git commit -m "First commit"# 对 remote 进行...
IPv6 问题
背景 IPv4 地址枯竭 5G、IOT、SDN/NFV、云计算、边缘计算等新兴技术兴起,需要地址的终端设备变多。 NAT 技术无法支持新兴技术。 各大互联网公(国外的Google、AWS、Apple,国内的阿里、滴滴等公司)司要定期推动本公司业务的 ipv6 技术改造,网信办会定期检查,不达标的公司要问责。 改造要点因为IP地址长度从32位变为128,文本格式从十进制数字变为十六进制(见附录1),为支持两种IP地址,包括但不限于以下改造要点: 客户端(手机APP和浏览器)缓存用户IP 后端服务根据IP做判断的业务逻辑,...
亚马逊工作方法
一、亚马逊14条领导力原则我们的领导力准则不仅仅是非常鼓舞人心的墙帷。这些准则十分有效,就像我们努力工作所取得的成果一样。无论是在讨论新项目的创意、决定应对客户问题的最佳解决方案,还是对求职者进行面试,亚马逊人每天都在使用这些准则。这是令亚马逊独具特色的一个重要因素。 顾客至尚(Customer Obsession)领导者从客户入手,再反向推动工作。他们努力地工作以赢得并维系客户对他们的信任。虽然领导者会关注竞争对手,但是他们更关注客户。 主人翁精神(Ownership)领导者是主人翁。他们会从长远考虑,不会为了短期业绩而牺牲长期价值。他们不仅仅代表自己的团队,而且代表整个公司行事。他们绝不会说“那不是我的工作”。 创新简化(Invent and Simplify)领导者期望并要求自己的团队进行创新和发明,并始终寻求使工作简化的方法。他们了解外界动态,从各处寻找新的创意,并且不局限于“非我发明”的观念。 当我们开展新事物时,我们要接受被长期误解的可能。 决策正确(Are Right, A...
微服务相关文献
《提升团队的微服务落地能力》
滚动重启、金丝雀发布、AB testing 和蓝绿部署
本文讨论发布周期(release cycles)里 deployment strategy 的问题,抛开大规模部署的 big bang deployment。 滚动重启、金丝雀发布、AB testing在 martin fowler 的博客里,金丝雀发布和滚动重启和 AB testing 并没有本质区别,都是 phased approach或者 incremental approach,是 ParallelChange 思想的实践。 当我们拥有一个新版本时: 滚动重启(rolling restart)rolling restart 会让新旧版本在环境里长时间共存,逐一使节点部署新版本,这样易于发现问题和回滚。 金丝雀发布(canary release)而金丝雀发布同样允许新旧版本长时间共存,在逐一部署新节点的前提下,逐步利用 LB 之类的基础设施来切分用户,其策略还可以细分为: 先不给新版本,在无流量的情况下在生产环境验证 - 很多大厂的实现都忽略了这点。 尽量让内部用户先使用 - FB 之类的大厂的员工都非常多,使用一个特性开关(名字很多,比如 feature bits,...