今天,我要和你说说数值计算的精度、舍入和溢出问题。之所以要单独分享数值计算,是因为很多时候我们习惯的或者说认为理所当然的计算,在计算器或计算机看来并不是那么回事儿。就比如前段时间爆出的一条新闻,说是手机计算器把 10%+10% 算成了 0.11 而不是 0.2。
Lombok 对象判等问题
Lombok 的 @Data 注解会帮我们实现 equals 和 hashcode 方法,但是有继承关系时, Lombok 自动生成的方法可能就不是我们期望的了。
Spring 声明式事务使用范例
Spring 针对 Java Transaction API (JTA)、JDBC、Hibernate 和 Java Persistence API (JPA) 等事务 API,实现了一致的编程模型,而 Spring 的声明式事务功能更是提供了极其方便的事务配置方式,配合 Spring Boot 的自动配置,大多数 Spring Boot 项目只需要在方法上标记 @Transactional 注解,即可一键开启方法的事务性配置。
Tom 商店-基于模板方法模式实现订单取消
在 Tom 商店-基于策略模式实现订单创建 一文中我们介绍了基于策略模式来实现不同类型的订单创建流程。同样,不同类型的订单的取消逻辑也有所不同,而对于取消订单的公共逻辑部分我们则抽取到抽象类中实现,对于具体的取消逻辑则有各自的子类去实现,这里我们使用了模板方法模式实现。为了流程的连贯,我们这里同时也使用到了策略模式实现动态切换不同类型的取消订单实现类。
Tom 商店-订单创建分布式事务解决方案
关于分布式事务,网上有很多相应的解决方案,下面我们介绍一下在 Tom 项目中使用的一种解决方案,其不依赖第三方框架,并采用异步补偿回滚的方式保证事务的一致性,具体流程如下图所示。
Tom 商店-基于策略模式实现订单创建
在电商项目中,会存在不同类型的订单。不同类型订单的创建实现策略不同,下面我们介绍一下基于策略模式来实现不同类型的订单创建流程。
Tom 商店-基于职责链模式获取购物车详情
在职责链模式中,多个处理器(也就是刚刚定义中说的“接收对象”)依次处理同一个请求。一个请求先经过 A 处理器处理,然后再把请求传递给 B 处理器,B 处理器处理完后再传递给 C 处理器,以此类推,形成一个链条。链条上的每个处理器各自承担各自的处理职责,所以叫作职责链模式。
设计模式-建造者模式
今天,我们再来学习另外一个比较常用的创建型设计模式,Builder 模式,中文翻译为建造者模式或者构建者模式,也有人叫它生成器模式。
实际上,建造者模式的原理和代码实现非常简单,掌握起来并不难,难点在于应用场景。比如,你有没有考虑过这样几个问题:直接使用构造函数或者配合 set 方法就能创建对象,为什么还需要建造者模式来创建呢?建造者模式和工厂模式都可以创建对象,那它们两个的区别在哪里呢?
话不多说,带着上面两个问题,让我们开始今天的学习吧!