程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
生活随笔
收集整理的這篇文章主要介紹了
程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)
小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
本案例為幣包的實(shí)際技術(shù)應(yīng)用:
做區(qū)塊鏈幣包的可以看看,當(dāng)年老師付我也是想了很久的。
虛擬幣幣包的工具有很多,那么他們使用的是什么技術(shù)實(shí)現(xiàn)的呢。咱們利用就將數(shù)學(xué)【枚舉】的虛擬幣內(nèi)環(huán)實(shí)際應(yīng)用給大家講一講。
測(cè)試使用語(yǔ)言:【Java】
?
1、創(chuàng)建幣種類(lèi)(我就寫(xiě)了4個(gè),方便測(cè)試)
基礎(chǔ)結(jié)構(gòu)【BaseWallet】
package com.item.btype;import java.math.BigDecimal; import java.util.Date;public class BaseWallet {private String Id;private String UserId;private Date LastDate;private BigDecimal AllCount;private BigDecimal DisCount;/*** 錢(qián)包ID*/public String getId() {return Id;}public void setId(String id) {Id = id;}/*** 用戶編號(hào)*/public String getUserId() {return UserId;}public void setUserId(String userId) {UserId = userId;}/*** 最后修改時(shí)間*/public Date getLastDate() {return LastDate;}public void setLastDate(Date lastDate) {LastDate = lastDate;}/*** 錢(qián)包總數(shù)量*/public BigDecimal getAllCount() {return AllCount;}public void setAllCount(BigDecimal allCount) {AllCount = allCount;}/*** 凍結(jié)數(shù)量*/public BigDecimal getDisCount() {return DisCount;}public void setDisCount(BigDecimal disCount) {DisCount = disCount;} }交易幣【BG】
package com.item.btype;public class BGWallet extends BaseWallet { }比特幣【BTC】
package com.item.btype;public class BTCWallet extends BaseWallet { }以太坊【ETH】
package com.item.btype;public class ETHWallet extends BaseWallet { }嫩模幣【OMG】
package com.item.btype;public class OMGWallet extends BaseWallet { }2、創(chuàng)建幣種枚舉
package com.item.btype;/*** @author TeacherFu* @date 2021年2月28日12:07:09*/ public enum WalletEnum {BG(1, "BG", "市場(chǎng)幣"),BTC(1000, "BTC", "比特幣"),ETC(1001, "ETC", "以太坊"),OMG(1002, "OMG", "嫩模幣"),;/*** 根據(jù)名字換編號(hào)** @param Name* @return*/public static int GetId(String Name) {WalletEnum[] values = WalletEnum.values();for (WalletEnum c : WalletEnum.values()) {if (c.getName().equals(Name)) {return c.getId();}}return -1;}/*** 根據(jù)ID換名字* @param Id* @return*/public static String GetName(int Id) {for (WalletEnum c : WalletEnum.values()) {if (c.getId() == Id) {return c.getName();}}return null;}/*** 編號(hào)*/private int Id;/*** 幣種英文名*/private String Name;/*** 幣種中文名*/private String Info;/*** 構(gòu)造方法** @param Id* @param Name* @param Info*/WalletEnum(int Id, String Name, String Info) {}public int getId() {return Id;}public void setId(int id) {Id = id;}public String getName() {return Name;}public void setName(String name) {Name = name;}public String getInfo() {return Info;}public void setInfo(String info) {Info = info;} }3、幣包選擇器
package com.item.btype;import java.math.BigDecimal;/*** 幣包操作選擇器*/ public class SwitchWallet {/*** 接口層獲取移動(dòng)端的操作幣種編號(hào)<br/>** @param WalletEnumId* @param UserId* @return 用戶當(dāng)前所查詢幣種的信息*/public static BaseWallet UserWalletById(int WalletEnumId, String UserId) {/*** 根據(jù)WalletEnumId標(biāo)識(shí)進(jìn)行case選擇*/switch (WalletEnumId) {case 1:return new BGWallet();case 1001:return new BTCWallet();case 1002:return new ETHWallet();case 1003:return new OMGWallet();default:return null;}} }4、Controller承接數(shù)據(jù)
package com.item.btype;import java.math.BigDecimal;public class WalletController {/*** 充當(dāng)接口層* @return*/public Resful AddChange(int WalletEnumId, String Token, BigDecimal ChangeCount){if(WalletEnum.GetName(WalletEnumId)==null){return new Resful("幣種不符");}/*** Token兌換UserId* String UserId=redis.TokenToUserId(Token);*/String UserId="asd2asdzpasodospasodpaos";/*** 獲取用戶某幣種錢(qián)包信息,使用父類(lèi)表承接*/BaseWallet bw=SwitchWallet.UserWalletById(WalletEnumId,UserId);//已經(jīng)獲取到對(duì)應(yīng)表的信息,其它功能在業(yè)務(wù)邏輯層完成即可。return new Resful("成功",bw.getAllCount());} }5、總結(jié):
a)、幣包的思路就是利用枚舉的方式作為幣包約束,在集合父子類(lèi)關(guān)系進(jìn)行簡(jiǎn)化代碼操作。
?
下篇內(nèi)容:【】:【】
萬(wàn)丈高樓平地起,程序員數(shù)學(xué)基礎(chǔ),從小學(xué)的【什么是數(shù)學(xué)】至【離散數(shù)學(xué)】(主要是圖論)咱們一步步成長(zhǎng),共同加油。
總結(jié)
以上是生活随笔為你收集整理的程序员数学基础【六、枚举 区块链,虚拟币种、币包约束,内环版本】(Java版本)的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: 数据库面试题【七、InnoDB索引和My
- 下一篇: 【最爽的日期工具包LocalDate·超