Java Collections Framework
UML 图overview-of-java-collections-framework-api-uml-diagram Collection-Hierarchy.html 队列的六个操作add(E e)Inserts the specified element at the tail of this queue if it is possible to do so immediately without exceeding the queue’s capacity, returning true upon success and throwing an IllegalStateException if this queue is full. offer(E e)Inserts the specified element at the tail of this queue if it is possible to do so immediately without exceeding the queue’s capacity, returning true upon...
泛型拾遗
基本设计原则 how codes should vary in different types. compatible with other release. before generic class,generic programming was achieved with inheritance:在所有后来使用T的地方使用Object或者Object数组。经典的猫狗列表问题的来源。 基本语法 java 的泛型没有 template 关键字。表面上(superficially)看和 C++ 并无二致,实际上有大量差别 三种基本概念: Type Parameter(类型形参):在泛型类、接口或方法声明时使用的标识符。 class Box<T> 中的 T。 但是在 Java 核心技术中,List<String>中的String也经常被描述为 Type Parameter。Container.class.getTypeParameters()得到的也是T。 Type...
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)。但...
一次大表翻页实验
explain 的解释https://www.cnblogs.com/butterfly100/archive/2018/01/15/8287569.html 假设慢查询是 100ms。 测试前准备一千万行数据12345678910111213141516171819202122232425262728CREATE TABLE `tb_ins_pay_order` () ENGINE=InnoDB AUTO_INCREMENT=100 DEFAULT CHARSET=utf8mb4 COLLATE utf8mb4_unicode_ci COMMENT='';drop database test_db;create database test_db;drop table tb_ins_pay_order;truncate table tb_ins_pay_order;drop procedure if exists doWhile;DELIMITER // tb_ins_pay_orderCREATE PROCEDURE...
六顶思考帽
六顶思考帽®是爱德华·德博诺博士开发的一种思维训练工具,它提供了“平行思维”的工具,全面思考问题的模型,避免将时间浪费在互相争执上。 人们参加会议都是抱着解决问题的共同目的而来的,然而发生争吵很多时候吵的并不是事实,而是情绪。人们总是还未真正理解对方的观点就陷入了和对方喋喋不休的争执之中。 所谓“六顶思考帽”是指蓝帽(指挥帽)、白帽(数据帽)、红帽(情感帽)、黄帽(乐观帽)、黑帽(谨慎帽)、绿帽(创新帽)。 六顶思考帽®是爱德华·德博诺博士开发的一种思维训练工具,它是目前全球最有影响力的创新思维训练课程。它提供了“平行思维”的工具,避免将时间浪费在互相争执上。强调的是“能够成为什么”,而非...
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,架构型即...