首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往
您找到你想要的搜索结果了吗?
是的
没有找到

趣解设计模式之《小王的糖果售卖机》

显然,通过这么一大堆的if...else是不优雅的,而且当增加一个全新的状态的时候,所有的动作都需要兼容这个新的动作,那么,这个就是很明显的基于过程编程了,针对以上的问题,我们可以使用今天要介绍的设计模式来解决...针对状态接口,我们创建4个实现类,分别是:糖果售卖状态类SoldState.java、糖果售空状态类SoldOutState.java、已经投放钱币状态类HasQuarterState.java、没有投放钱币状态类...NoQuarterState.java,那么当前处于哪个状态则由糖果售卖机类GumballMachine.java维护。...;     } } 已经投放钱币状态类:HasQuarterState.java public class HasQuarterState implements State {     private...;     } } 没有投放钱币状态类:NoQuarterState.java public class NoQuarterState implements State {     private GumballMachine

15510

趣解设计模式之《小王的糖果售卖机》

显然,通过这么一大堆的if...else是不优雅的,而且当增加一个全新的状态的时候,所有的动作都需要兼容这个新的动作,那么,这个就是很明显的基于过程编程了,针对以上的问题,我们可以使用今天要介绍的设计模式来解决...针对状态接口,我们创建4个实现类,分别是:糖果售卖状态类SoldState.java、糖果售空状态类SoldOutState.java、已经投放钱币状态类HasQuarterState.java、没有投放钱币状态类...NoQuarterState.java,那么当前处于哪个状态则由糖果售卖机类GumballMachine.java维护。...; } } 已经投放钱币状态类:HasQuarterState.java public class HasQuarterState implements State { private...; } } 没有投放钱币状态类:NoQuarterState.java public class NoQuarterState implements State { private GumballMachine

11410

Java精度问题

结果确实是 0.060000000000000005 0.5800000000000001 401.49999999999994 1.2329999999999999 Java中的简单浮点数类型float...这个问题相当严重,如果你有9.999999999999元,你的计算机是不会认为你可以购买10元的商品的。 在有的编程语言中提供了专门的货币类型来处理这种情况,但是Java没有。...现在让我们看看如何解决这个问题。 四舍五入 我们的第一个反应是做四舍五入。...也不能解决这个问题: System.out.println(new java.text.DecimalFormat("0.00").format(4.025));输出是4.02 现在我们已经可以解决这个问题了...;/** * 由于Java的简单类型不能够精确的对浮点数进行运算,这个工具类提供精 * 确的浮点数运算,包括加减乘除和四舍五入。

1.1K50

动态规划初步

凑钱问题: 题目:给一个总额amount,以及现有的钱币面值数组coins,要求计算最少需要多少张coins中的钱币才能凑出总额; 动态规划是将大问题转化为小问题,然后一步步求解出最终结果。...这便是动态规划的全部:大问题转化为小问题,每次小问题都是最优结果,最终基于这些小问题得到大问题的最优结果,各种dp问题的主要不同是大问题是如何“基于小问题”得出结果的 回到上面的图片中,我们这道题目要求的是计算凑...amount所需最少的钱币张数,那凑X元储存的就应该是钱币的张数,所以上面的图片进一步转化 ?...当选面值1RMB时,需要借助子问题凑4元的答案;当选面值2RMB时,需要借助子问题凑3元;选面值3RMB需要借助子问题凑2元,如此得出三个答案(A,B,C),最终计算着三个答案哪个是最优结果,即哪个所需张数最少...,并将至存放到dp[5]作为凑5元的最优结果,以上便是动态规划在凑硬币问题上的应用,其实既然都叫思想了很明显凡是大问题依赖小问题解的都可以使用dp求出。

34530

JAVA | Java 解决跨域问题 花式解决跨域问题

WebMvcConfigurer 四、使用Nginx配置 五、使用 @CrossOrgin 注解 Spring Cloud Gateway 跨域配置 --- 引言 我们在开发过程中经常会遇到前后端分离而导致的跨域问题...什么情况会跨域 同一协议, 如http或https 同一IP地址, 如127.0.0.1 同一端口, 如8080 以上三个条件中有一个条件不同就会产生跨域问题。...PATCH max-age: 3600 注意: 通过gateway 转发的其他项目,不要进行配置跨域配置 有时即使配置了也不会起作用,这时你可以根据浏览器控制的错误输出来查看问题...,如果提示是 response 中 header 出现了重复的 Access-Control-* 请求头,可以进行如下操作 import java.util.ArrayList; import org.springframework.cloud.gateway.filter.GatewayFilterChain

11.1K32

Numeric Overflow,SQL问题Java Code问题

这两天出差,出发前开发同学提了一个问题,开会间隙,有了一些想法,java代码中和Oracle中均有可能出现此错误,记录于此。 一段mybatis的代码,查询一张表的数据,SQL类似如下, ?...开发库运行这段代码,正常返回,测试库运行这段代码,无记录返回的情况正常,只要有记录返回,无论有几条,均会报错,Numeric Overflow,注意这儿报的是java.sql.SQLException,...,有以下产品会出现错误, Bug 19019306 : ERROR UPDATING MEDIATOR INSTANCE: JAVA.SQL.SQLEXCEPTION: NUMERIC OVERFLOW...目前已经知道了问题,反过来看,首先程序报错Numeric Overflow,提示很清楚,就是有数据类型溢出了,但未出现ORA错误号,因此很有可能不是数据库中的问题,进一步使用SQL执行,未出现错误,说明很有可能是代码问题...我们可能经常碰见这样的问题,一条SQL,一段code,一个环境可以,另一个环境报错,我觉得首先需要考虑的,就是明确问题的范围,是SQL语句的问题,是代码问题,抽丝剥茧,大胆怀疑,细心验证,真相往往就只有一个

2.9K21

Java日期问题汇总

日期格式化的跨年问题 通常格式化日期时,都是使用的YYYY/MM/dd来格式化日期,但是在遇到跨年日期时,就会遇到很神奇的现象,如下: 1 2 3 4 5 6 7 8 9 10 11 final...(DateTimeFormatter.java:1746) at java.time.format.DateTimeFormatter.format(DateTimeFormatter.java:1720...其实关于这类格式化字符需要注意大小写的问题,比如y和Y的含义也是不一样的。...参考链接 Java YYYY/MM/dd遇到跨年日期的问题 YYYY-MM-DD 的黑锅,我们不背! Java日期时间API系列19–Jdk8,ZonedDateTime和时区转换。...【java8中的时间操作】java8中获取月的最后一天或者总天数,JDK8 LocalDate AP localdate 比较两个时间_Java 8中处理日期和时间示例 日期格式‘YYYY-MM-DD’

1.4K10

Java常见问题

自古深情留不住,总是套路得人心 最近经历了一次惨无人道的程序员笔试,真的是“笔”试,默默地来整理一下…… 以后遇到问题要多整理…… 常见套路: 当一个变量被赋值为null的时候就被视为垃圾会被回收 当一个...常见问题: final,finally和finalize的区别 final:最终的意思,可以修饰类,成员变量,成员方法  修饰类,类不能被继承  修饰变量,变量是常量  修饰方法,方法不能被重写  finally...基础问题: 常用排序 package com.hanqi.maya.model; import java.util.Arrays; public class Arr { public static...Java的三个版本   JavaSE:Java的标准版,主要用于桌面应用程序开发。同时也是Java程序的基础。...将问题包在try中,程序可以运行,但是catch里必须有代码,不然只能是隐藏问题而不是处理异常 throws和throw的区别 throws 用在方法声明后面,跟的是异常类名 可以跟多个异常类名,用逗号隔开

1.1K60
领券