首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

JavaMoney规范(JSR 354)与对应实现解读

我们需要根据我们的使用场景进行合理的选择。如果FastMoney的数字功能足以满足你的用例,建议使用这种类型。...HALF_EVEN Money与FastMoney也可以通过from方法进行相互的转换,方法如下; FastMoney fastMoney = FastMoney.of(144, "CNY"); Money...money = Money.from(fastMoney); fastMoney = FastMoney.from(money); 2.2.2.3 MonetaryAmount的扩展 虽然Moneta...默认提供了四种加载更新策略:从fallback URL获取,不获取远程的数据;启动的时候从远程获取并且只加载一次;首次使用的时候从远程加载;定时获取更新。针对不同的策略使用不同的加载数据的方式。...同时也提供了很好的扩展机制方便进行相关的改造来满足自己的业务场景。 文中从使用场景出发引出JSR 354需要解决的主要问题。

1.2K40

解锁新姿势:探讨复杂的 if-else 语句“优雅处理”的思路

从功能上来说,基本完成,但是对于我这种有代码洁癖的人来说,代码质量上不忍直视。我们开始着手 优化一下我们的第一版代码吧。 思考 看到如上代码,聪明的朋友首先想到的是,这不是典型的策略模式吗?...策略模式 什么是策略模式? 可能有的朋友还不清楚,什么是策略模式。策略模式是定义一系列的算法,把它们一个个封装起来, 并且使它们可相互替换。 比如上述需求,有返利、有打折、有折上折等等。...); } 还记得我在第一篇中说到的卫语句吗?...把 if - else 切换为 switch 创建一个工厂方法而已。...StrategyFactory 这里我使用的是静态内部类单例,在构造方法的时候,初始化好 需要的 Strategy,并把 list 转化为 map。 这里 转化就是“灵魂”所在。

79910
  • 您找到你想要的搜索结果了吗?
    是的
    没有找到

    如何运用领域驱动设计 - 值对象

    本篇文章会从值对象的概念出发,解释什么是值对象以及怎么运用值对象,并且给出相应的代码片段(本教程的代码片段都使用的是C#,后期的实战项目也是基于 DotNet Core 平台)。...既然值对象是没有ID的一个事物(东西),那么我们来考虑一下什么情况下我们不需要通过ID来辨识一个东西: “在超市购物的时候:我有五块钱,你也有五块钱” 这里会关心我的钱和你的钱是同一张,同一个编码,同一个组合方式...因为它们的价值是一样的,就购买东西来说,所以它是不需要ID的。 “去上厕所的时候:同时有两个空位,都是一样的马桶,都一样的干净” 这里你会关心你要上的马桶是哪一个生产规格,哪一个编码吗?...从运动表1中,仿佛出了性别之外,我们都不知道后面的空需要表达什么意思,而运动表2加上了该环境特有的名称和选项,一下就能让人读懂。...这是因为我们的值对象拥有一个很重要的特性,不可变性。 值对象是不可变的:一旦创建好之后,值对象就永远不能变更了。相反,任何变更其值的尝试,其结果都应该是创建带有期望值的整个新实例。

    81430

    2 springboot项目集成使用disconf,基于docker环境

    默认是3次 conf_server_url_retry_times=1 # 获取远程配置 重试时休眠时间,默认是5秒 conf_server_url_retry_sleep_seconds=1 这里需要注意的地方有...version、app、env都需要和在server端添加的保持一致。 ? 然后我们创建一个类,来使用disconf的配置功能。...() { return money; } public void setMoney(double money) { this.money = money...; } } 这里有一个DisconfItem注解,指明了一个key,那么该项就会是一个可以动态配置的项了,在服务端通过修改key为money的项,就可以动态修改该值。...启动该镜像,需要注意,我们此前已经启动过了一个docker-compose.xml了,而现在我们要启动一个新的容器,并且要link之前的里面的容器。

    91840

    Java面向对象编程三大特征 – 封装

    本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。...封装有什么用 2. 如何进行封装 3. 常规封装方法 封装是面向对象编程中的三大特征之一,在对封装性进行解释时我们有必要先了解一些面向对象的思想,以及相关的概念。...需要注意的是,这三个单词不能同时出现,当这三个单词都不出现的时候会被认为是默认访问权限,所以权限修饰符一共有四种:private、默认、protected、public。 2....封装有什么用 通过使用权限修饰符,我们可以限定类的成员的被访问权限,那为什么要这样做呢?在很多场景下,我们需要确保我们对属性值的操作均是有效操作,不能违背某些规则。...money){ // 如有需要,可以在方法中可以自定义其他逻辑 this.money = money; } public double getMoney

    43610

    商业鬼才教你 策略模式

    文章目录 故事线 策略模式 什么是策略模式 && 策略模式与工厂方法模式的区分 策略模式代码实现 故事线 一切准备妥当,广军的奶茶汉堡店“啃得起”准备开业大吉啦。...于是,广告一发,横幅一拉,喇叭一吹,开业大吉,生意红火,广军赚到了人气,学生们吃的也很开心。 ---- 策略模式 昨天讲完了工厂方法模式,是不是觉得这个地方可以套工厂方法进来,其实不然。...什么是策略模式 && 策略模式与工厂方法模式的区分 策略模式通过 定义一系列算法的方法,减少各种算法类与使用算法类之间的耦合。...关注点不一样 一个关注对象创建 一个关注行为的封装 解决不同的问题 工厂模式是创建型的设计模式,它接受指令,创建出符合要求的实例;它主要解决的是资源的统一分发,将对象的创建完全独立出来...,让对象的创建和具体的使用客户无关。

    46930

    Java面向对象编程三大特征 - 封装

    本人的技术路线从Java全栈工程师一路奔向大数据开发、数据挖掘领域,如今终有小成,愿将昔日所获与大家交流一二,希望对学习路上的你有所助益。...需要注意的是,这三个单词不能同时出现,当这三个单词都不出现的时候会被认为是默认访问权限,所以权限修饰符一共有四种:private、默认、protected、public。 2. 权限对应关系表 ?...private:私有权限,只能在定义的类中访问,在其他类中创建的实例均无法访问 默认:同包可访问权限,在没有声明权限修饰符时为默认权限,允许在同包的其他类访问 protected:受保护权限,允许有继承关系的子类访问...封装有什么用 通过使用权限修饰符,我们可以限定类的成员的被访问权限,那为什么要这样做呢?在很多场景下,我们需要确保我们对属性值的操作均是有效操作,不能违背某些规则。...money){ // 如有需要,可以在方法中可以自定义其他逻辑 this.money = money; } public double getMoney

    46721

    设计模式之 - 策略落实

    一、什么是策略模式 策略模式:它定义了算法家族,分别封装起来,让他们之间可以互相替换,此模式的变化,不会影响到使用算法的客户。 我们来看下策略模式的UML图: ?...业务场景:现在我们在做一个商场的优惠活动,这个活动根据节日的不同也会调整相应的活动规则,比如五一黄金周我们是所有会员商品一律8折,节日过后恢复原价不再优惠,等到了国庆商场有有了新的促销活动,满300减...首先我们需要创建一个公共的策略类 public interface Strategy { // 算法规则 double regulation(double money); } 接下来我们分别定义三种活动规则...("不够返现条件 : " + money); return money; } } 接下来,我们需要创建一个封装类也可以叫上下文的类,对我们的活动规则进行一个维护 public class...第一:首先在我们的封装类中其实已经使用到了简单工厂模式,我们使用简单工厂模,我们通过这种方式的封装将判断是什么优惠的过程从客户端转移到了我们的程序中,客户不需要再去关系; 第二:我们来看下我们昨天的简单工厂模式客户端事怎么调用的

    34810

    最全解密微信红包随机算法(含代码实现)

    3.1、算法实现的技术要点 问:微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。 为什么采取实时计算金额?...因为红包只占一条记录而且有效期就几天,所以不需要多大空间。就算压力大时,水平扩展机器是。 问:关于实时实时性,为什么明明抢到红包,点开后发现没有?...注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法(Tim老师也觉得上述算法太复杂,不知基于什么样的考虑)。...从接口层面看,第一个接口纯缓存操作,搞压能力强,一个简单查询Cache挡住了绝大部分用户,做了第一道筛选,所以大部分人会看到已经抢完了的提示。 问:抢到红包后再发红包或者提现,这里有什么策略吗?...((money - red) * 100) / 100.0; return remain; } 算法整体思路很简单,就在在最后一个人的时候要注意,此时不进行随机数计算,而是直接将剩余金额作为红包

    14.8K23

    Java—基础入门

    第二步:需要在Project中创建Module(模块),一个工程中可以包含多个模块 第三步:需要在Module中新建Package(包),一个模块中可以有多个包 第四步:需要在Package中新建Class...double money = 188.8; //发100元 money = money - 100; //再收20元 money = money + 20; //再打印money记录的值是多少 System.out.println...讲这些注意事项目的是让大家知道,有哪些写法是允许,有哪些写法是不允许的,能分辨对错,并知道为什么错。 1.变量定义在哪个{}范围内,就只在哪个大括号内有效。...,以及变量需要注意的问题,就学习完了。...什么是关键字? 关键字是java语言中有特殊含义的单词。比如用int表示整数,用double表示小数,等等! 关键字有哪些?

    11410

    Java面向对象编程中级

    *;//表示将java.util包所有都引入 建议:我们需要使用到哪个类,就导入哪个类即可,不建议使用*导入 注意事项和使用细节 package的作用是声明当前类所在的包,需要放在类的最上面,一个类中最多只有一句...我们着一个案例来分析当子类继承父类,创建子类对象时,内存中到底发生了什么?...注意事项和使用细节 方法重写也叫方法覆盖,需要满足下面的条件 子类的方法的形参列表,方法名称,要和父类方法的形参列表方法名称完全一样。...从某一应用程序的一次执行到同一应用程序的另一次执行,该整数无需保持一致。...完成收益入账 完成功能驱动程序员增加新的变化和代码 //老韩思路, 定义新的变量 double money = 0; double balance =

    47830

    经典Java面试题收集

    抽象只关注对象有哪些属性和行为,并不关注这些行为的细节是什么。 继承:继承是从已有类得到继承信息创建新类的过程。提供继承信息的类被称为父类(超类、基类);得到继承信息的类被称为子类(派生类)。...,因此有些地方将其称之为保留字,其实保留字这个词应该有更广泛的意义,因为熟悉C语言的程序员都知道,在系统类库中使用过的有特殊意义的单词或单词的组合都被视为保留字) 7、int和Integer有什么区别?...首先需要注意的是f1、f2、f3、f4四个变量都是Integer对象引用,所以下面的==运算比较的不是值而是引用。装箱的本质是什么呢?...补充:使用Unicode意味着字符在JVM内部和外部有不同的表现形式,在JVM内部都是Unicode,当这个字符被从JVM内部转移到外部时(例如存入文件系统中),需要进行编码转换。...35、内部类可以引用它的包含类(外部类)的成员吗?有没有什么限制? 答:一个内部类对象可以访问创建它的外部类对象的成员,包括私有成员。 36、Java 中的final关键字有哪些用法?

    1.2K80

    16. Sprng事务管理

    数据层有事务我们可以理解,为什么业务层也需要处理事务呢?...数据层有事务我们可以理解,为什么业务层也需要处理事务呢?...PlatformTransactionManager 只是一个接口,Spring 还为其提供了一个具体的实现: ‍ ​ ​ ‍ 从名称上可以看出,我们只需要给它一个 DataSource 对象,它就可以帮你去在业务层管理事务...money); } } 注意: @Transactional 可以写在接口类上、接口方法上、实现类上和实现类方法上 写在接口类上,该接口的所有实现类的所有方法都会有事务 写在接口方法上,该接口的所有实现类的该方法都会有事务...实现数据库中记录日志 ②:业务层转账操作(transfer),调用减钱、加钱与记录日志功能 需要注意一点就是,我们这个案例的预期效果为: 无论转账操作是否成功,均进行转账操作的日志留痕 ‍ 3.2.2

    13010

    JAVA后端面试《Spring》

    Spring Spring是什么?有什么好处? IOC是什么?有什么好处?简单过程? DI是什么? IOC和DI的关系? bean标签的属性有哪些? IOC创建对象有哪几种方式?...Spring是如何实现IOC的?也就是如何创建对象的? Spring Bean的生命周期? 依赖注入DI的方式有几种? 注解实现IOC和DI的准备工作有哪些? 有哪些注解?分别表示什么含义?...Spring中的bean是线程安全的吗? Spring支持几种bean的作用域? Spring JDBC的实现过程? 事务的概念是什么? 事务的特性有几个? 数据库操作时可能存在的问题有哪些?...什么是事务的隔离级别?事务的隔离级别有几个? Spring中事务的传播行为有几种? Spring 声明式事务的实现? 1.Spring是什么?有什么好处?...简单过程:程序读取Spring的XML配置文>>>获取需要创建对象的bean>>>通过反射机制创建对象的实例。 3.DI是什么? DI:Dependency Injection(依赖注入)的简写。

    79720

    社交软件红包技术解密(十一):最全解密微信红包随机算法(含代码实现)

    3.1、算法实现的技术要点 问:微信的金额什么时候算? 答:微信金额是拆的时候实时算出来,不是预先分配的,采用的是纯内存计算,不需要预算空间存储。 为什么采取实时计算金额?...因为红包只占一条记录而且有效期就几天,所以不需要多大空间。就算压力大时,水平扩展机器是。 问:关于实时实时性,为什么明明抢到红包,点开后发现没有?...注意:这里的算法是每被抢一个后,剩下的会再次执行上面的这样的算法(Tim老师也觉得上述算法太复杂,不知基于什么样的考虑)。...从接口层面看,第一个接口纯缓存操作,搞压能力强,一个简单查询Cache挡住了绝大部分用户,做了第一道筛选,所以大部分人会看到已经抢完了的提示。 问:抢到红包后再发红包或者提现,这里有什么策略吗?...5.4、完善算法 在原先的基础上对代码进行简单的修正: public static double rand(double money, int people, ListDouble> l) {

    1.4K30

    Java面向对象编程三大特征 - 继承

    同时,博主也想通过此次尝试打造一个完善的技术图书馆,任何与文章技术点有关的异常、错误、注意事项均会在末尾列出,欢迎大家通过各种方式提供素材。 对于文章中出现的任何错误请大家批评指出,一定及时修改。...什么是继承 从类的概念出发,我们可以通过定义class去描述一类事物,具有相同的属性和行为。...继承有什么用 如果我们将学生类进一步细化为:初中生、高中生、大学生。显然,细化之后的类与类之间一定是存在某些差异的,但是也一定会存在共同点。...= money; } // 使用封装方法操作父类中的属性 public void setMoney(double money){ super.money = money...类中创建Son实例 Son son = new Son("小李",3000);// 成功为父类继承而来的属性赋值 // 以下代码编译通过 double money

    58631

    iOS多线程——你要知道的NSThread都在这里你要知道的iOS多线程NSThread、GCD、NSOperation、RunLoop都在这里

    这些基础概念,有不明白的读者还请自行查阅。...; 上述把所有NSThread的创建方法都讲解了一遍,实例方法和类方法的区别就在于,实例方法会返回NSThread对象,当需要启动线程时需要手动触发start方法,而类方法没有返回值,创建线程后立即启动该线程...:WithObject:watiUntilDone:方法,该方法就是用于使用主线程执行相关方法,iOS对于更新UI的操作有规定,必须放在主线程执行,否则会产生运行时警告,最重要的是,不在主线程执行无法预知什么时候才会进行更新操作...thread start]; [thread2 start]; [thread3 start]; [thread4 start]; } 上面这个栗子也比较简单,关于NSCondition需要注意的就是它的...还有一个要注意的地方就是是否有钱的haveMoney这个flag,这个flag存在的意义就是,当线程被唤醒后进入就绪态,接下来系统线程调度具体调度哪个线程来执行开发者是不知道的,也就是说我们无法预知接下来执行的是生产者还是消费者

    1.2K90

    如何做一个小程序口令红包功能

    语音识别 应用场景:A用户设置了一个中文的口令红包,接收到该红包的B用户需要用语音说出该口令,完全匹配的话则获取该红包的某个比例金额。...红包分配 应用场景:创建红包时 打开红包一般有两种分配方法,一种是使用创建时便分配好每一份的份额。一种是打开时再动态分配,这里采取的是第一种。...因为我们的应用没有微信的量级,自然不需要考虑太多(负载,并发等),产品的要求也只是说金额这方面要实现类微信红包的分配方法即可。...有几点值得注意的地方: 1.原答案里的随机数生成法使用了 java.math.BigDecimal. 可php没有对应的函数,自带的随机数也不好用。...需要说明的是这个方法不是我写的,但是我实在不记得出处在哪了。我只是记得把java的实现方法改成了php。对原作者说声抱歉。 觉得本文对你有帮助?请分享给更多人。

    1.9K100

    策略模式——(+简单工厂模式+反射)

    策略模式,需要我们结合简单工厂模式,更高级地用法可能需要我们掌握Java反射机制。简单工厂模式我们在最早的时候介绍,我们也谈到了一点Java的反射机制。...对于策略模式,我们需要引入一个CashContext类,这个类用于维护对Strategy对象的引用。还是太抽象,我们从代码的角度来看,CashContext是一个什么类。...从Main客户端类移到了CashContext类嘛,好像根本没什么用啊。...}; //注意在这里不能使用double的引用类型Double,我猜测是这样涉及一点自动装箱和拆箱 19 Object[] params = {8.0}; 20...System.out.println(money); 23 } 24 25 } 至于为什么要用到反射来消除switch,在上面两篇博文中已经有提到过,这里不再叙述。

    2.2K01
    领券