SQL反模式11-每日新花样(限定列的有效值)

目标:限定列的有效值

    限定列的有效值是非常有用的,比如bug表的status,我们定义check约束,让它只允许保存(“NEW”,”IN PROGRESS”,”FIXED”),那么它就会拒绝所有不存在以上集合中的无效值。但是定义check约束,我们日后改如何修改限定有效值呢?这就是本章所讲的反模式。

阅读全文

SQL反模式10-取整错误

目标:使用小数取代整数

    整数是一个很有用的数据类型,但是只能存出整数,但是它不能表示像“2.5”这样的浮点型。如果数据对精度要求很好,你需要使用另一种数据类型来代替整形。当然还要保证运算结果必须正确。

阅读全文

Android 安装 MySQL 服务

    由于许多原因USQL移除本地MySQL功能,需要者可以参照以下教程来完成。

介绍:版本为5.1.57编译而来。

    阅读全文

    maven打包不能下载插件(maven-clean-plugin)

    场景

        在一个新环境(新电脑),第一次执行mvn package,很有可能出先类似问题,具体报错信息如下:

    阅读全文

    SQL反模式09-元数据分裂

    目标:支持可扩展性

        随着数据量增长,数据库的查询性能也会随之下降,哪怕查询结果只是很少的几千行,遍历表中积累的数据也可能使整个查询性能变得极差,即使使用了索引,随着数据量增大,索引的作用也变得非常有限。
        本章目标就是要优化数据库的结构来提升查询性能以及表的平滑扩展。

    阅读全文

    SQL反模式08-多列属性

        有时候在我们需求中,一条记录会对应多个
    相同内容的列,比如电话号码:家庭电话、工作电话、手机号码等。那么就需要分四列来存储,而且后面需求可能还加入出差电话、传真号码这些不可预测的分类。

    目标:存储多列属性

        像第2章一样,解决一个属性看上去只属于一张表,但是同时可能会有多个值。
        这一章,使用bug数据添加标签来举例。一个bug可以存在多个标签。

    阅读全文

    API设计-AOP+log4j2(logId)

        在生产环境下出现bug,都需要靠日志才能定位到问题的关键,而有效的日志往往能让你事半功倍。在生产并发访问情况下,日志纵横交错,那么如何快速找到你要看的日志呢?
        本章将介绍通过AOP使打印的每一条日志增加一个与业务相关的logId。

    阅读全文

    SQL反模式07-多态关联

        允许用户对bug记录进行评论,我们很容易设计出一个一对多的关系。但是随着需求变更,可以进行评论的可能是多张表,比如bug和feature_request都可以进行评论,就会有类似以下的关系。

    1
    2
    3
    4
    5
    6
    7
    8
    -- 错误的语句,仅用于表现关系
    create table comment(
    comment_id serial primary key,
    issue_id bigint unsigned not null,
    .......
    foreign key(issue_id)
    reference bug(issue_id) or reference feature_request(issue_id)
    );

    阅读全文

    SQL反模式06-实体-属性-值

    目的:支持可变的属性

        可扩展性是程序员所追求的。通常一张表对应一个实体,但是需求中也可能两个实体他们继承同一个父类实体,他们由相同的属性,也有不同属性。
        bug和feature_request,有相同的属性,我们抽出一个父类issue。
    关系示意图

    阅读全文

    ActiveMQ解析-客户端(消息发送端)

        本篇主要粗略介绍程序在启动时,连接mq做了哪些操作,你可能需要先自己阅读一遍源码,再来看本篇文章,或对照源码看本篇文章

    1 抛开spring,创建一个简单生产者

    1.1 安装windows版activemq

      阅读全文